我有三种型号:隔间,选项和产品,设置如下:
class Compartment < ActiveRecord::Base
has_and_belongs_to_many :products
has_and_belongs_to_many :options
...
end
class Option < ActiveRecord::Base
has_and_belongs_to_many :products
has_and_belongs_to_many :compartments
...
end
class Product < ActiveRecord::Base
has_and_belongs_to_many :options
has_and_belongs_to_many :compartments
...
end
产品有许多隔间和隔间有很多选择。
我不是100%确定模型是否设置正确以实现我想要的效果。每当管理员创建产品时,他应该看到所有隔间和所有选项都被创建,这样他就可以选择最终用户可用的隔间和选项。每当用户登录并想要基于产品创建报价时,他应该使用管理员选择的选项来构建报价。一个简单的例子:
管理员视图:
用户视图:
隔间可以属于许多产品,选项也是如此,它们可以属于许多隔间。
我很难围绕模型配置,最重要的是如何设置表单来保存/编辑/创建产品和报价。
再次感谢任何帮助!
答案 0 :(得分:0)
我会在隔间和选项之间以及产品和隔间之间设置地图表并使用
Class Products
has_many :product_compartments
has_many :compartments, through: :product_compartments #Name of the map table
end
Class Compartment
has_many :product_compartments
has_many :products, through: :product_compartments #Name of the map table
has_many :compartment_options
has_many :options, through: :compartment_options #Name of the map table
end
Class Option
has_many :compartment_options
has_many :compartments, through: :compartment_options #Name of the map table
end
在您的管理界面中,您需要在表格上将产品连接到隔间,这可以简单到2个下拉菜单,一个带产品,另一个带隔间。
隔间和选项的类似形式
然后您可以通过
之类的内容为产品构建报价表单<% @product.compartments.each do |compartment| %>
<%= #code rendering a checkbox for the compartment %>
<% compartment.options.each do |option| %>
<%= #code rendering a checkbox for the option %>
<% end %>
<% end %>
然后你可以用javascripts隐藏东西,并使它成为一个很好的用户界面。