私の User モデルでは、email、first_name、last_name、password などの通常の容疑者がいます。
すべてまたは一部の検証をスキップする必要がある場合がいくつかあります。
現在、次のような条件を除きます。
validates :first_name, presence: :true, etc..., unless: :skip_first_name_validation?
validates :last_name, presence: :true, etc..., unless: :skip_last_name_validation?
validates :email, presence: :true, etc..., unless: :skip_email_validation?
もちろん、私も持っています:
attr_accessor :skip_first_name_validation, :skip_last_name_validation, etc.
次に、プライベート メソッドを使用してそれぞれの状態を確認します。
def skip_first_name_validation?
skip_first_name_validation
end
def skip_last_name_validation?
skip_last_name_validation
end
def skip_email_validation?
skip_email_validation
end
etc..
true
そこから、検証をスキップする必要があるときはいつでも、コントローラーでこれらの各人に値を割り当てるだけです。
これはすべて正常に機能しますが、もっとエレガントな方法があるかどうか疑問に思っていますか?
モデルの各属性に対して、次のような単純な条件を使用できれば理想的です。
:skip_validation?
私のコントローラーでは、次のようにします。
skip_validation(:first_name, :last_name, :password) = true
これをどのようにプログラムするかについて誰かが提案できますか? 既存の宝石/ライブラリを使用したくないのですが、レールでこの動作をプログラムする方法を理解しようとしています。ありがとう。