web-dev-qa-db-ja.com

Rails belongs_to多くのモデル

私はSO about Rails関連付けに私の質問に似ているいくつかの質問を見つけましたが、私の人生では私は方法を理解することができないようです使用する belongs_to複数のモデル。

これがtable structureです:

User
 id

Post
 id
 user_id #foreign key; a post belongs to a User aka "Who created this post"

Comment
 id
 user_id #foreign key; a comment belongs to a User aka "Who made this comment"
 post_id #foreign key; a comment belongs to a Post aka "What post this comment is for"

そしてassociations

User
 has_many :posts
 has_many :comments

Post
 belongs_to :user
 has_many :comments

Comment
 belongs_to :user
 belongs_to :post

これは正しいアプローチですか?

53
Zabba

はい、それが正しいアプローチです。

56
Maxem

常に「最良の」アプローチとは限りませんが、Railsは Polymorphic belongs_to Association と呼ばれるものを提供します。これにより、xxx_id列が次の理由でデータベースに外部キーを定義できなくなります考えられる多くのテーブルの1つでidを参照する一方で、別の列はそのテーブルのモデルの名前を指定しますが、Railsでの関係をより明示的にします。また、モデルが所属するのではなく、他のモデルの1つにのみ所属するように制限します追加のdbマジックなしで複数の外部キーの設定を使用すると発生するので、1つ以上に。

10