Двойная Полиморфная Ассоциация в Рельсах - PullRequest
2 голосов
/ 07 октября 2011

У меня есть таблица соединений, и я хотел бы, чтобы обе ассоциации own_to были полиморфными.Соотношение будет выглядеть следующим образом:

Double Polymorhpic

Структура класса будет выглядеть следующим образом:

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 и т. Д. И т. Д.

Я бы хотел быть просветленным, если есть недостатки, о которых я не думаю.

Ответы [ 2 ]

0 голосов
/ 07 октября 2011

кажется, что geos-as-taggable-on может сделать вашу жизнь проще.

0 голосов
/ 07 октября 2011

Я не уверен, совместим ли он с Rails 3, но вам нужен гем has_many_polymorphs:

https://github.com/fauna/has_many_polymorphs

этот форк утверждает, что он совместим с Rails 3:

https://github.com/jystewart/has_many_polymorphs

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...