foo_idのpresenceでは、存在しないIDでも保存できてしまう- fooを参照した際は
nilが返る
- fooを参照した際は
fooのpresenceを指定すると、foo_idへの代入ではバリデーションを通らなくなるfooに未保存のオブジェクトを代入してsave!するとPG::NotNullViolationが発生するPG::NotNullViolation: ERROR: null value in column "character_id" violates not-null constraint
- Polymorphic association
validates :foo_type, presence: trueは不要- クラスが存在しない場合はsave!時に
NameError: uninitialized constant XXXが発生する - 特定のクラス名のみを許可したい場合のみ
validates :foo_type, inclusionをする
- クラスが存在しない場合はsave!時に
foo_typeとfoo_idのpresenceでは、存在しないIDでも保存できてしまう- fooを参照した際はnilが返る
- 関連オブジェクトが保存済みであることを保証するには、
validates :foo, presence: trueのみを指定する - Polymorphic associationの場合も同様
- Polymorphic associationで特定のクラスのみを対象としたければinclusion validationを組み合わせる