0

私のモデルのフォーム検証では、呼び出された列のパラメーター:virtualが false の場合、:locationフィールドは:presence => true.

私の現在のコードは次のとおりです。

validates :location, if :virtual => false, :presence => true

しかし、それは私に構文エラーを与えています。これをフォーマットする正しい方法は何ですか?

4

2 に答える 2

1

何かのようなもの:

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

于 2012-08-08T16:34:32.637 に答える
0
validates :location, presence: true, if: Proc.new { |p| p.virtual == false }
于 2012-08-08T16:49:39.577 に答える