Rails中的多态连接表?

时间:2010-02-25 06:57:31

标签: ruby-on-rails jointable

在我的应用中,一个事件有多个与之关联的项目,可能是所有不同的类型。例如,“用户吃香蕉”活动会有一个用户和一个与之相关的香蕉。

似乎有一种方法可以实现具有3个字段的多态连接表:event_id,attachable_type和attachable_id,其中可附加的是多态类型。

这可能和/或我离开这里吗?

1 个答案:

答案 0 :(得分:3)

我通常使用has_many_polymorphs插件。在m.onkey.org上有一个great article on that

您需要一个联接表,然后可以在event.rb中编写类似的内容,例如:

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

bananas.rb会有类似的内容:

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

我倾向于忘记的是,虽然香蕉只属于一个事件,但你仍然需要调用banana_instance_1.events(注意复数!)。这很奇怪,但有效。如果您致电.event,则会获得nil