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
我正在使用 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