私のアプリでは、イベントには複数のアイテムが関連付けられており、場合によってはすべてのタイプが異なります。たとえば、「ユーザーがバナナを食べた」イベントには、ユーザーとバナナが関連付けられます。
これを実現する1つの方法は、event_id、attachable_type、attachable_idの3つのフィールドを持つポリモーフィック結合テーブルを作成することです。ここで、attachableはポリモーフィックタイプです。
これは可能ですか、および/または私はここで基地から離れていますか?
私のアプリでは、イベントには複数のアイテムが関連付けられており、場合によってはすべてのタイプが異なります。たとえば、「ユーザーがバナナを食べた」イベントには、ユーザーとバナナが関連付けられます。
これを実現する1つの方法は、event_id、attachable_type、attachable_idの3つのフィールドを持つポリモーフィック結合テーブルを作成することです。ここで、attachableはポリモーフィックタイプです。
これは可能ですか、および/または私はここで基地から離れていますか?
私は通常、これに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ます。