【发布时间】:2013-09-05 16:05:14
【问题描述】:
我有以下安排
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
pizza 和 order 之间的连接表,这个多对多是一个 has many through,而不是一个 has 和属于 many,因为在 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
然后我有一个管理页面来创建和关联比萨饼和浇头。
但我不知道如何创建订单表格。用户应该能够添加披萨并选择一个或多个已创建的浇头
【问题讨论】:
标签: ruby-on-rails nested-forms simple-form