Rails协会 - 订单

时间:2015-12-07 20:43:38

标签: ruby-on-rails

所以我一直在尝试创建一个虚拟应用程序来尝试和学习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>):

1 个答案:

答案 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