ユーザーとドキュメント モデルがあります。ユーザーは多くのドキュメントを持ち、ドキュメントはユーザーに属します。これを一般化して、親モデルと子モデルを持つだけにすることができます。
現在、子モデルの単体テストを書いていますが、parent_id フィールドも検証する必要があるかどうか疑問に思っています (たとえば、only_integer、ゼロより大きい、id が親テーブルに存在するなど)。それらは固有の外部キー属性であるため、私のためにそれを行いますか?
ユーザーとドキュメント モデルがあります。ユーザーは多くのドキュメントを持ち、ドキュメントはユーザーに属します。これを一般化して、親モデルと子モデルを持つだけにすることができます。
現在、子モデルの単体テストを書いていますが、parent_id フィールドも検証する必要があるかどうか疑問に思っています (たとえば、only_integer、ゼロより大きい、id が親テーブルに存在するなど)。それらは固有の外部キー属性であるため、私のためにそれを行いますか?
Rails 3ウェイは
# child.rb
validates :parent, presence: true
Rails を介しても外部キー制約を追加できます (つまり、手動で DB に接続して生の SQL を実行する必要はありません) が、モデル自体でも同様に実行できます。
# child.rb
validates_presence_of :parent
これにより、parent_id があり、その ID が Parent テーブル内にあることが確認されます。
それ以外の場合、いいえ、Rails は制約を自動的にチェックしません。