所以我一直在尝试创建一个虚拟应用程序来尝试和学习Rails。我认为我可以创建的应用程序是一个咖啡订购应用程序,适用于一群在工作的人。
users
。用户可以创建coffee_order
。
咖啡订单包含其他个人用户的订单。
每位用户可以拥有一个或多个coffee_shop_items
(例如拿铁咖啡,
卡布奇诺,丹麦,松饼等)
assignee
,这是任务的人
与获得订单。作为user
,我创建了一个咖啡订单,选择了一个受让人,将用户添加到订单中,并为每个用户添加了一个或多个咖啡店商品,
我真的很想知道数据库应该如何,以及需要什么样的关联以及任何连接表?
我也在尝试使用表单条目的嵌套属性。
提前感谢您的帮助。
使用一些代码更新我尝试创建咖啡订单:
@coffee_order = CoffeeOrder.new(coffee_order_params)
params[:coffee_order][:user_coffee_orders_attributes].each do |user_order|
order = @coffee_order.user_coffee_orders.new(user_id: user_order[1][:user_id].to_i)
user_order[1][:coffee_shop_items].each do |item|
coffee_shop_item = CoffeeShopItems.find(item) if item != ""
# this line fails! see error below
@coffee_order.user_coffee_orders.coffee_shop_items << coffee_shop_item if coffee_shop_item != nil
end
end
错误:
NoMethodError (undefined method `coffee_shop_items' for #<UserCoffeeOrder::ActiveRecord_Associations_CollectionProxy:0x42c6180>):
答案 0 :(得分:0)
coffee_shop_items属于订单,而不是用户。毕竟,用户可能会在另一天创建另一个订单?您可能还应该查看rails文档,其中,IIRC实际上包含了购物车应用程序的演练。
User has_many :coffes_orders
User has_many :coffee_orders_he_needs_to_get, class_name: "CoffeeOrder", foreign_key: "assignee_id"
CoffeeOrder belongs_to :user
CoffeeOrder belongs_to :assignee, class_name: "User"
CoffeeOrder has_and_belongs_to_many :coffee_shop_items
Coffee_shop_items has_and_belongs_to_many :coffee_orders