私のモデルのフォーム検証では、呼び出された列のパラメーター:virtualが false の場合、:locationフィールドは:presence => true.
私の現在のコードは次のとおりです。
validates :location, if :virtual => false, :presence => true
しかし、それは私に構文エラーを与えています。これをフォーマットする正しい方法は何ですか?
私のモデルのフォーム検証では、呼び出された列のパラメーター:virtualが false の場合、:locationフィールドは:presence => true.
私の現在のコードは次のとおりです。
validates :location, if :virtual => false, :presence => true
しかし、それは私に構文エラーを与えています。これをフォーマットする正しい方法は何ですか?
何かのようなもの:
attr_accessor :virtual # sets up a "virtual attribute" called "virtual" to which you can read/write a value
# this step isn't necessary if you already have an attribute on the model called "virtual"
validates :location, :presence => true, :unless => :virtual?
を使用するとvirtual?、属性virtualが true か false かをチェックする必要があります。を使用unlessすると、この検証は でvirtualあるfalse(または と見なされる値であるfalse) 場合にのみ実行されます。
仮想属性と検証の詳細: Rails: Using form fields that are unassociated with a model in validations
validates :location, presence: true, if: Proc.new { |p| p.virtual == false }