Rails:列出创建所需的属性

Rails: List Required Attributes For Create

我正在使用 Model.new(<attributes here>) 在 rails 控制台中手动创建对象。有没有一种简单的方法可以列出模型需要我包含哪些属性才能使 .save 调用成功?

我是运行rails4.2.3

您可以使用 Model.validators 获取一组验证器。您必须以某种方式解析它以提取存在的验证,例如:

presence_validated_attributes = Model.validators.map do |validator|
  validator.attributes if validator.is_a?(ActiveRecord::Validations::PresenceValidator)
end.compact.flatten

我找到了一种更简单的方法来完成同样的事情:

创建失败时,您可以查看对象上的错误消息。

# app/models/price.rb
class Price < ActiveRecord::Base
  validates_presence_of :value
end

# in console
p = Price.new()
=> #<Price id: nil, created_at: nil, updated_at: nil, value: nil>

p.save
=> false

p.errors.messages
=> {:value=>["can't be blank"]}

万一你的强制属性有错误信息

book = Book.new
book.valid?
book.errors.messages

如果您只想要属性名称而不需要错误消息

book = Book.new
book.valid?
book.errors.messages.keys