В 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
, а затем идентификатор из Comments.commentable_id
?