kontrowersyjnie HABTM są rzadko, jeśli w ogóle, dobry projekt i IMO tylko o zaledwie Rails rzeczą dostał błędne.
wprowadzić tabelę xref dołączenia do produktów i kategorii i korzystać has_many: through po obu stronach relacji więc skończyć z
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
To daje najlepszą elastyczność z najmniejszą ilością kodu re- faktoring dla Ciebie plus dużo bardziej intuicyjne ścieżki, aby niezależnie od danych trzeba po obu stronach relacji i pozwoli osiągnąć następujące
b = Brand.find(1)
b.categories.all
Aktualizacja Powyższy kod jest całkowicie nieprzetestowany i właśnie poprawiłem rażąco głupi błąd, który popełniłem. Jeśli masz jakiekolwiek problemy wykonawcze to potem wrócić