如何从rails中的多个表中选择列?

时间:2015-06-18 13:12:32

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 ruby-on-rails-3.2 rubygems

我有两个表User和Order以及这两个表之间的关联如下。

用户模型中的

  has_many :orders, dependent: :destroy
订单模型中的

  belongs_to :user

我想从订单表中选择所有数据,而不是user_id我想从User表中选择该用户的名称。

我怎么能在铁轨上做? 提前谢谢。

2 个答案:

答案 0 :(得分:2)

您可以执行以下操作:

orders = Order.where(your_conditions).includes(:user)

然后:

orders.each do |order|
  order.user.name # implies that every order has a user
  # or
  order.user.try(:name) # won't fail if order does not belong to a user
end

这称为急切加载,您可以在此处找到文档:http://guides.rubyonrails.org/active_record_querying.html#eager-loading-associations

答案 1 :(得分:0)

语句Order.joins(:user).select('orders.*, users.name')获得命令的所有列以及同一记录中的用户名,表名应在select指令中以复数形式传递。