モデルで定義された検証のリストを取得する方法
例:
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'}
基本的なニーズのためのプラグインは必要ありません。
これを実行して、すべてのバリデーターのハッシュを取得できます。
ModelName.validators
特定のフィールドのバリデーターを取得したい場合:
ModelName.validators_on(:attribute)
このコードは、必須フィールドの配列を生成します。それはあなたのニーズに適応できるはずです。
@required_fields = []
ModelName.validators.each do |v|
@required_fields << v.attributes.first if v.kind == :presence
end
モデルに検証を動的に追加する場合は、インスタンスを使用して検証を一覧表示できます。
product = Product.new
product.singleton_class.validators_on(:price)
#=> [#<ActiveModel::Validations::PresenceValidaton>]
Rails 5.2でテスト済み。
ネイティブな方法はないようですが、グーグル(「Railsは検証を反映する」)が表示されます このプラグイン 。