从Rails中的.each循环访问另一个模型

时间:2017-08-15 07:46:12

标签: ruby-on-rails ruby

我正在尝试创建一个包含用户,订单和餐饮的餐厅经理应用。用户有很多订单,订单有很多餐。我想要一张表格,列出用户的所有订单以及用餐情况。名称和价格。我有三个模型:UserOrderMeal。虽然从这个循环中访问order_id不是问题:

- @userOrders.each do |order|
    %tr
      %td= order.id

当我尝试通过

访问用餐的名字时
- @userOrders.each do |order|
    %tr
      %td= order.id
      %td= order.meals.name

这是我得到的:

Table with what's supposes to be meals' names

在Ruby控制台中,当我输入user.orders[1].meals时,我得到:

Console output

这是我的orders_controller.rb

  def index
    user_id = current_user.id
    @userOrders = Order.where(:user_id => user_id)    
  end

以下是我的order.rb

class Order < ApplicationRecord
  belongs_to :user
  has_many :meals
end

user.rb

class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
  has_many :orders
end

meal.rb

class Meal < ApplicationRecord
  belongs_to :order
end

1 个答案:

答案 0 :(得分:4)

订单有很多餐。许多餐点都不能只有一个名字。这就是你要用order.meals.name做的事情。每餐都有自己的名字。也可以吃饭。像这样:

- orders.each do |order|
  - order.meals.each do |meal|
    = meal.name