2

私のアプリでは、イベントには複数のアイテムが関連付けられており、場合によってはすべてのタイプが異なります。たとえば、「ユーザーがバナナを食べた」イベントには、ユーザーとバナナが関連付けられます。

これを実現する1つの方法は、event_id、attachable_type、attachable_idの3つのフィールドを持つポリモーフィック結合テーブルを作成することです。ここで、attachableはポリモーフィックタイプです。

これは可能ですか、および/または私はここで基地から離れていますか?

4

1 に答える 1

3

私は通常、これに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

私が忘れがちなことは、バナナは 1 つのイベントにしか属していませんが、それでもコールする必要があるということですbanana_instance_1.events(複数形であることに注意してください!)。それは奇妙ですが、うまくいきます。あなたが呼び出す.event場合は、取得しnilます。

于 2010-02-25T07:07:38.663 に答える