Rails显示存在:真实的字段

时间:2016-08-30 12:41:21

标签: ruby-on-rails activerecord

是否可以在控制台presence: true字段中显示

class Product < ActiveRecord::Base
  validates :title, :description, presence: true
end 

Product.column_names - 显示所有字段

寻找smth Product.mandatory_columns => ['title','description']

3 个答案:

答案 0 :(得分:2)

在Ruby on Rails的不同版本中,这可能会有所不同,但我能够在Rails 4中使用此方法获取它们:

Model.validators.select{|v| v.kind_of?(ActiveRecord::Validations::PresenceValidator)}.flat_map(&:attributes).uniq

甚至更短,正如评论中所指出的那样:

Model.validators.select{|v| v.kind == :presence}.flat_map(&:attributes).uniq

答案 1 :(得分:0)

为什么不把它放在常数?

class Product < ActiveRecord::Base
  MandatoryColumns = %i[title description]
  validates_presence_of *MandatoryColumns
end 

rails console:

Product::MandatoryColumns => [:title,:description]

<子> KISS is an acronym for "Keep it simple, stupid"

答案 2 :(得分:0)

是的,您可以使用以下methods创建自己的方法:

  • 验证
  • validators_on

使用这些方法,您可以使用您的标准列出有关您班级的所有验证。