使用通用的通用多对多多态关联?

时间:2014-02-12 17:13:09

标签: ruby-on-rails-3 activerecord many-to-many polymorphism

在问之前,我必须说我真的在网上试图找到答案,但我没有发现任何解决了我的问题。 Answers like that无法解决我的问题,因为我不想指定source_type,我想要一个通用的东西 - 你会明白的。

好的,我们走了。我在我的项目中使用了“多对多的多态”关系,但我无法让它工作。在尝试使用多态之前,这只是一个“多对多”关系并且工作得很好,所以我想保留结构,只是添加多态。

结构:

多对多uservisitor有许多subject,反之亦然。我们假设uservisitor followers subject followed

关系表:此对象具有称为“psrelations”(人物 - 主题关系)的关系表。该表存储多对多关系。


模型:

psrelations.rb:

attr_accessible :followed_id, :follower_type, :follower_id
belongs_to :follower, polymorphic: true 
belongs_to :followed, class_name: "Subject"

user.rb:

has_many :psrelations, as: :follower, dependent: :destroy  
has_many :followed_subjects, through: :psrelations, source: :followed

visitor.rb:

has_many :psrelations, as: :follower, dependent: :destroy  
has_many :followed_subjects, through: :psrelations, source: :followed

subject.rb中

has_many :psrelations, as: :followed, dependent: :destroy
has_many :followers, through: :psrelations, source: :follower


我希望“关注者”返回所有“访问者”和“用户”,而不仅仅是指定source_type。

一切似乎都没问题,但当我尝试self.followers.include?(person)(人可以是用户或访客)时,我得到了:

Cannot have a has_many :through association 'Subject#followers' on the polymorphic object 'Follower#follower'.

我做错了什么?

0 个答案:

没有答案