2016-08-30 59 views
0

是否有可能在控制檯顯示presence: true領域Rails的顯示存在:真田

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

Product.column_names - 顯示所有字段

尋找不便Product.mandatory_columns=> ['title','description']

+0

儘管使用'Model.validators',儘管它不會根據需要提供所需的輸出,但您可能需要根據需要迭代和準備輸出,但它會將所有內容都放入關於給定'Model'的驗證和屬性。 –

回答

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

更短:v.kind ==:存在 – cutalion

+0

不知道,謝謝!我更新了我的答案。 – katafrakt

+0

thx,不知道'Model.validators',正是我需要的 – user

0

爲什麼不把它在不斷的?

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

軌控制檯:

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

KISS is an acronym for "Keep it simple, stupid"

+0

什麼是'%i [...]'? – user

+1

一組符號。 –

+0

有用,很好:) – user

0

是的,你可以用下面的methods創建您自己的方法:

  • 驗證
  • validators_on

使用這些方法,您將能夠使用您的標準列出關於您的課程的所有驗證。