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 に答える