我有一个标签模型,我想要多态,但我不想要五个记录的“视频”标签,例如,我想创建一次标签,并能够在一个标签上使用它各种型号。我已经准备好了一些关于这样做的问题,但我还没有完全了解如何让它发挥作用。
所以我得到了:
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 =>
选项在那里把它们绑在一起,但我只是不跟随究竟该怎么做。有人可以帮忙吗?
答案 0 :(得分:4)
您必须按如下方式重做模型:
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 gem用于您的用例。