Ruby-on-Rails では、これを「ポリモーフィック アソシエーション」と呼びます。
私のアプリケーションにはいくつかのCommentable
ものがあります。それぞれの表は以下のとおりです。
Post
id | title | text | author (FK:Person.id) | ...
Person
id | name | ...
Photo
id | title | owner (FK:Person.id) | path | ...
Comments
次のようにテーブルを追加したいと思います。
Comments
id | commentable_type | commentable_id | text | author (FK:Person.id)
この方法でデータベースの参照整合性が失われることは理解していますが、他の唯一のオプションは複数のComments
テーブルを持つことです: PostComments
、PersonComments
、PhotoComments
、 ...
そして今、質問のために:
Comments.commentable_type
最初に からテーブル名を取得し、次に から ID を取得して、ルックアップを行う方法を理解するフォームを作成するにはどうすればよいComments.commentable_id
ですか?