如何从 Rail 中的多个表中选择列



我有两个表用户和顺序以及这两个表之间的关联如下。

在用户模型中

  has_many :orders, dependent: :destroy

在订单模型中

  belongs_to :user
我想

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

如何在导轨中执行操作?提前谢谢。

您只需执行以下操作:

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

然后:

orders.each do |order|
  order.user.name # implies that every order has a user
  # or
  order.user&.name # won't fail if order.user returns nil
end

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

该语句Order.joins(:user).select('orders.*, users.name')在同一记录中获取包含其所有列和用户名的订单,表名应在 select 指令中以复数形式传递。

您无需在控制器中进行任何特殊选择。

在控制器中:

@orders =  Order.last(5) # gets 5 most recent orders

在您看来:

@orders.each do |order|
  order.user.name # or order.user.first_name, e.t.c
end

只需从订单中访问用户即可。

相关内容

  • 没有找到相关文章

最新更新