2

モデルに検証を設定しました:

validates_inclusion_of :height, :in => 36..96, :allow_nil => true, :message => 'must be between 3 and 8 feet'

ここで、JQ検証で同じ検証範囲を設定したいと思います。JavaScriptファイルで同じ値を繰り返すこともできますが、これを行うためのより良い方法は、プログラムで検証範囲を取得し、ビューを介して出力することです。

可能であれば、Railsでプログラムで検証範囲を取得するにはどうすればよいですか?

4

1 に答える 1

5

次のように、モデルの検証にアクセスできます。

Model.validators

これらの特定の値を取得するには、次のようにします。

Model.validators_on(:height).select {|v| v.class == ActiveModel::Validations::InclusionValidator}.first.options[:in]

あなたの範囲を返します:

36..96

とを使用Range#minRange#maxて整数値を取得できます。

すべてを便利にするために、次のようないくつかの方法を作成します。

class Model < ActiveRecord::Base
  validates_inclusion_of :height, :in => 36..96, :allow_nil => true, :message => 'must be between 3 and 8 feet'

  def self.min_height
    validators_on(:height).select {|v| v.class == ActiveModel::Validations::InclusionValidator}.first.options[:in].min
  end
end
于 2012-06-29T15:54:19.970 に答える