多态has_many:通过导轨
问题描述:
我有一个标签模型,我想是多态的,但我不想要五个记录的“视频”标签例如,我想要创建标签一次,是能够在多种型号上使用它。我已经准备好了一些关于这样做的问题,但我还没有完全弄清楚如何使其工作。多态has_many:通过导轨
所以我有:
class Tag < ActiveRecord::Base
belongs_to :tagable, :polymorphic => true
end
和
class Post < ActiveRecord::Base
has_many :tags, :through => :tag_assignments
end
和
class TagAssignment < ActiveRecord::Base
has_many :tags, :as => :taggable
end
在我看来,应该工作,但是...阅读完所有的questions我在这里知道我需要一个:source =>
选项在那里把它们结合在一起,但我只是没有遵循exac如何做到这一点。谁能帮忙?
答
你必须重做你的模型如下:
class Tag < ActiveRecord::Base
has_many :tag_assignments
end
class TagAssignment < ActiveRecord::Base
belongs_to :tagable, :polymorphic => true
belongs_to :tag
end
class Post < ActiveRecord::Base
has_many :tag_assignments, :as => :tagable
has_many :tags, :through => :tag_assignments
end
现在给出一个帖子,你可以得到它的标签如下:
post.tags
注意
您应该考虑使用acts-as-taggable-on宝石为您的用例。
好的,所以中间表是多态的。说得通。 – Slick23 2012-03-27 17:55:26