Kontrovers HABTM die selten sind, wenn überhaupt, ein gutes Design und IMO nur über den einzige Sache, Rails bekam falsch.
Einführung eines xref-Tabelle Produkte und Kategorien und Verwendung has_many verbinden: auf beiden Seiten der Beziehung durch, so dass Sie am Ende mit
class Brand < ActiveRecord::Base
has_many :products
has_many categories :through => products # This is now allowed in Rails 3.x and above
end
class Category < ActiveRecord::Base
belongs_to :product_category
has_many :products :through => product_category
end
class Product < ActiveRecord::Base
belongs_to :brand
belongs_to :product_category
has_many :categories :through => product_category
end
class ProductCategory < ActiveRecord::Base
has_many :products
has_many :categories
end
Dies gibt Ihnen die beste Flexibilität mit der geringsten Menge an Code wieder- Factoring für Sie plus eine viel intuitiver Weg, was auch immer Daten, die Sie auf beiden Seiten der Beziehung müssen zu erhalten und ermöglicht es Ihnen, die folgende
b = Brand.find(1)
b.categories.all
aktualisierenzu erreichenDer obige Code ist völlig ungeprüft und ich habe gerade einen grell blöden Fehler korrigiert, den ich gemacht habe. Wenn Sie irgendwelche Probleme haben, die Umsetzung dieses dann wieder