我有以下安排
Pizza 模型用于创建可由客户订购的披萨列表,它也与订单相关联,以指示已订购的披萨。
class Pizza < ActiveRecord::Base
has_many :pizza_orders
has_many :orders, :through => :pizza_orders
has_and_belongs_to_many :toppings
end
选项模型,用于创建可与某些比萨饼关联的选项列表,还与每个比萨饼订单的连接表相关联,以指定哪个比萨饼订购了浇头。
class Topping < ActiveRecord::Base
has_and_belongs_to_many :pizzas
has_and_belongs_to_many :pizza_orders
end
披萨和浇头的连接表,这是必需的,因为没有它,您无法指定哪些浇头可以或不能与披萨一起订购。毕竟,将意大利辣香肠配料列在素食披萨上可能会冒犯某人。
class PizzasToppings < ActiveRecord::Base
belongs_to :pizza
belongs_to :topping
end
订单模型,这只是将所有连接表保存在一起。
class Order < ActiveRecord::Base
has_many :pizza_orders
has_many :pizzas, :through => :pizza_orders
end
比萨饼和订单之间的连接表,这个多对多是一个有很多通过,而不是一个拥有和属于很多,因为在 Rails 中你不能直接操作 HBATM 连接表(据我尝试),你需要能够因为期权关系。
class PizzaOrder < ActiveRecord::Base
belongs_to :pizza
belongs_to :order
has_and_belongs_to_many :toppings
end
用于指示已为订单中的特定比萨饼选择了哪些配料的连接表。
class PizzaOrdersToppings < ActiveRecord::Base
belongs_to :pizza_orders
belongs_to :topping
end
然后我有一个管理页面来创建和关联比萨饼和配料。
但我不知道如何创建订单表格。用户应该能够添加比萨饼并选择一个或多个已创建的浇头