Полиморфная таблица соединений в Rails? - PullRequest
2 голосов
/ 25 февраля 2010

В моем приложении с событием связано несколько элементов, потенциально разных типов. Например, событие «Пользователь съел банан» будет иметь пользователя и связанный с ним банан.

Похоже, что одним из способов достижения этого было бы иметь полиморфную таблицу соединений с 3 полями: event_id, attachable_type и attachable_id, где attachable - это полиморфный тип.

Возможно ли это и / или я далеко от базы?

1 Ответ

3 голосов
/ 25 февраля 2010

Я обычно использую плагин has_many_polymorphs для этого.На m.onkey.org есть отличная статья на эту тему .

Вам нужна таблица соединений, а затем можно написать что-то подобное, например, в event.rb:

has_many_polymorphs :items, :from => [:users, :bananas]

bananas.rb будет иметь что-то вроде:

belongs_to :event
belongs_to :item, :polymorphic => true

Что-то, что я склонен забывать, это то, что хотя банан принадлежит только одному событию, вам все равно придется звонить1016 * (обратите внимание на множественное число!).Это странно, но работает.Если вы позвоните .event, вы получите nil.

...