Relação muitos para muitos para muitos com necessidade de outro modelo específico
Eu tenho um relacionamento muitos-para-muitos entreSupermercado, produtos eMarca através deFornecem- eOrigem-modelos. Eu também quero armazenar qual Combinação de Marca de Produto específica eu tenho no meu supermercado. Eu pensei em outro modelo (chameiSpecific_Combination
onde eu armazenaria:supermarket_id
, :product_id
e:brand_id
.
class Supermarket < ActiveRecord::Base
has_many :supplies
has_many :products, :through => :supplies
end
class Supply < ActiveRecord::Base
belongs_to :product
belongs_to :supermarket
end
class Product < ActiveRecord::Base
has_many :supplies
has_many :supermarkets, :through => :supplies
has_many :origins
has_many :brands, :through => :origins
end
class Origin < ActiveRecord::Base
belongs_to :products
belongs_to :brands
end
class Brand < ActiveRecord::Base
has_many :origins
has_many :products, :through => :origins
end
E agora a classe que eu pensei que eu poderia usar para armazenar uma combinação específica de produto e marca
class Specific_Combination < ActiveRecord::Base
# to show which columns I would use:
attr_accessible :supermarket_id, :product_id, :brand_id
end
Esta é uma abordagem adequada?Como eu tenho que modelar os relacionamentos de e paraSpecific_Combination
?Como eu iria acessar (criar ...) os itens emSpecific_Combination
?Como seria uma abordagem melhor (normalização)?Editar
class Supply < ActiveRecord::Base
belongs_to :origin
belongs_to :supermarket
end
class Product < ActiveRecord::Base
has_many :origins
end
class Origin < ActiveRecord::Base
belongs_to :product
belongs_to :brands
end
class Brand < ActiveRecord::Base
has_many :origins
end
class Supermarket < ActiveRecord::Base
has_many :supplies
has_many :origins, :through => :supplies
# my attempt to create an array of names of supermarkets
def self.to_be_chosen
chosen_supermarket = Array.new
Supermarket.find_each do |supermarket|
chosen_supermarket << supermarket.name
end
return chosen_supermarket
end
end
/Editar