我的应用程序包含这五个模型:超市可以有不同类别的产品,这些类别中的产品可以由多个品牌生产。
现在我想在我的超市表单中有一个(或两个)选择字段,我可以在其中选择一个出现名称的类别中的元素和出现名称的品牌中的一个或多个元素,所以这可以存储在Origin中。
我想我可以使用collection_select
,但我如何在这里使用它?
class Supermarket < ActiveRecord::Base
has_many :supplies
has_many :origins, :through => :supplies
end
class Supply < ActiveRecord::Base
belongs_to :origin
belongs_to :supermarket
end
class Origin < ActiveRecord::Base
belongs_to :category
belongs_to :brand
end
class Category < ActiveRecord::Base
has_many :origins
end
class Brand < ActiveRecord::Base
has_many :origins
end
可能,我还必须调整模型......
编辑
为了澄清表格的结果应该是什么:
在编辑超市的表格中,我想选择一个产品类别和相应的品牌,以便我知道该类别中的哪些类别和哪些品牌在这个特定的超市中出售:
超市(表格):
超市名称:沃尔玛
类别(选择一项):
- 可乐(Category_ID 1)
- 玉米片(Category_ID 2)
- ...
品牌(多选)
- 可口可乐公司(Brand_ID 1)
- 百事可乐(Brand_ID 2)
- 家乐氏公司(Brand_ID 3)
- ...
这应该在Origin中创建条目,例如:
超市_ID Category_ID Brand_ID 1 1 1 1 1 2 2 1 2 2 2 3 …………
/编辑
编辑 2
根据这个问题的答案,我可以通过控制台创建或选择一个条目,如下所示:
walmart = Supermarket.create(:name => "Walmart");
cornflakes = Category.create(:name => "Corn Flakes");
kellogs = Brand.create(:name => "Kellog's");
walmart.origins.create(:category_id => cornflakes, :brand_id = kellogs)
我如何通过表格使用它?我如何使用select
或者collection_select
甚至还有其他我可以使用的助手?
/编辑 2