2

我有一个这样的模型

class Question < ActiveRecord::Base
  attr_accessible :kind, :question, :state
  belongs_to :section
  validates :question, :kind, :state, :presence => true
  validates :question, :uniqueness => {:scope => [:section_id]}
  validates :kind, :inclusion => {:in => %w(radio check stars)}
  validates :state, :inclusion => {:in => %w(new active answered canceled)}
end

是否可以列出某个字段的所有接受值?例如,从“kind”字段中获取 %w(radio check stars) 列表

4

2 回答 2

2

可能有更好的方法来做到这一点,但是在控制台中玩的一些让我明白了:

Question.validators_on(:kind).select{|v| v.kind_of? ActiveModel::Validations::InclusionValidator}.first.options
# => {:in=>["radio", "check", "stars"]}`
于 2012-11-02T07:11:37.657 回答
1

简洁一点

VALID_KINDS = %w(radio check stars) validates_inclusion_of :kind, in: VALID_KINDS

文件

于 2014-08-06T17:46:55.830 回答