我对Rails很陌生,并且正在尝试建立多态的HABTM关系。问题是我有三个要关联的模型。
第一个是事件模型,然后是两种参与者:用户和联系人。
我想做的是能够将用户和联系人都作为参与者。所以,我现在在我的代码中是:
事件模型
has_and_belongs_to_many :attendees, :polymorphic => true
用户模型
has_and_belongs_to_many :events, :as => :attendees
联系人模型
has_and_belongs_to_may :events, :as => :attendees
最佳答案
不,您不能这样做,不存在多态的has_and_belongs_to_many关联之类的东西。
您可以做的是创建一个中间模型。可能是这样的:
class Subscription < ActiveRecord::Base
belongs_to :attendee, :polymorphic => true
belongs_to :event
end
class Event < ActiveRecord::Base
has_many :subscriptions
end
class User < ActiveRecord::Base
has_many :subscriptions, :as => :attendee
has_many :events, :through => :subscriptions
end
class Contact < ActiveRecord::Base
has_many :subscriptions, :as => :attendee
has_many :events, :through => :subscriptions
end
这样,订阅模型的行为类似于N:N关系中的链接表,但允许您对事件进行多态行为。