我通过 Supply 在超市,产品和品牌之间建立了多对多的关系 - 和 Origin -models。
我还想在我的超市里存储我所拥有的特定产品品牌组合。
我想到了另一个模型(我称之为Specific_Combination
,我将存储:supermarket_id
,:product_id
和: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
现在我认为可以用来存储特定产品品牌组合的课程
class Specific_Combination < ActiveRecord::Base
# to show which columns I would use:
attr_accessible :supermarket_id, :product_id, :brand_id
end
Specific_Combination
?Specific_Combination
中的项目?修改
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
/修改
答案 0 :(得分:0)
在这里,我可能有供应来源而不是产品。
另外,想想你是否需要SpecificCombination。你打算用它做什么操作?您要列出数据库中的所有SpecificCombinations吗?你打算去寻找一个具体的吗?你打算创建一个新组合吗?
然后想一想这些操作是否只能与其他类一起完成?
class Supermarket < ActiveRecord::Base
has_many :supplies
has_many :origins, :through => :supplies
def self.choice
Supermarket.all.map { |supermarket| [ supermarket.name, supermarket.id ] }
end
end
end
class Supply < ActiveRecord::Base
belongs_to :origin
belongs_to :supermarket
end
class Origin < ActiveRecord::Base
belongs_to :supplies
belongs_to :brands
end
walmart = Supermarket.create(:name => "Walmart");
cornflakes = Product.create(:name => "Corn Flakes");
kellogs = Brand.create(:name => "Kellog's");
walmart.origins.create(:product_id => cornflakes, :brand_id = kellogs)