У меня есть таблица соединений, и я хотел бы, чтобы обе ассоциации own_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
У этого подхода есть очевидные недостатки, особенно при большой нагрузкена столе тегов.То, чего я пытаюсь достичь, - это гибкий дизайн, который позволяет мне создавать новые Taggables или TagGroups без создания новых таблиц соединений.Например, без двойной полиморфности Taggable1 потребуется таблица Taggable1Taggings, чтобы соединить Taggable1 с полиморфными группами тегов.Точно так же мне нужны Taggable2Taggings, Taggable3Taggings, Taggable4Taggings и т. Д. И т. Д.
Я бы хотел быть просветленным, если есть недостатки, о которых я не думаю.