我有一个连接表,我希望belongs_to关联都是多态的。这种关系看起来如下:
类结构如下所示:
Class Tagable1 < ActiveRecord::Base
has_many :taggings
has_many :tag_group_1s, :through => :taggings
has_many :tag_group_2s, :through => :taggings
...
end
Class TagGroup1 < ActiveRecord::Base
has_many :taggings
has_many :taggable_1s, :through => :taggings
has_many :taggable_2s, :through => :taggings
...
end
Class Tagging < ActiveRecord::Base
belongs_to :taggable, :polymorphic => true
belongs_to :tag, :polymorphic => true
end
这种方法存在明显的缺点,特别是Taggings表上的负载很重。我想要实现的是灵活的设计,它允许我创建新的Taggables或TagGroups而无需创建新的连接表。例如,如果没有双重多态,Taggable1将需要Taggable1Taggings表来将Taggable1与多态TagGroups连接起来。同样,我需要Taggable2Taggings,Taggable3Taggings,Taggable4Taggings等等。
如果有一些我没想到的缺点,我希望能够开悟。
答案 0 :(得分:0)
我不确定它是否与Rails 3兼容,但你想要has_many_polymorphs gem:
https://github.com/fauna/has_many_polymorphs
这个fork声称与Rails 3兼容:
答案 1 :(得分:0)
似乎acts-as-taggable-on gem可以让您的生活更轻松。