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を組み合わせる