47

モデルで定義された検証のリストを取得する方法

例:

class ModelName
  validates_presence_of :field_name
  validates_inclusion_of :sex, :in => %w(M F)
end

私は次のようなハッシュが必要です:

{:field_name => 'required', :sex => 'Must be in: M, F'}
4

4 に答える 4

111

基本的なニーズのためのプラグインは必要ありません。

これを行うと、すべてのバリデーターのハッシュを取得できます。

ModelName.validators

特定のフィールドのバリデーターを取得したい場合:

ModelName.validators_on(:attribute)
于 2010-10-29T13:34:15.713 に答える
3

このコードは、必須フィールドの配列を生成します。それはあなたのニーズに適応できるはずです。

@required_fields = []
ModelName.validators.each do |v|
  @required_fields << v.attributes.first if v.kind == :presence
end
于 2018-12-17T14:48:18.373 に答える
1

モデルに検証を動的に追加する場合は、インスタンスを使用して検証を一覧表示できます。

product = Product.new
product.singleton_class.validators_on(:price)
#=> [#<ActiveModel::Validations::PresenceValidaton>]

Rails5.2でテスト済み。

于 2018-11-07T11:43:55.663 に答える
0

ネイティブな方法はないようですが、グーグル(「レールは検証を反映する」)を使用すると、このプラグインが見つかります。

于 2010-10-29T12:41:39.703 に答える