[:suppl-6ren">
gpt4 book ai didi

ruby-on-rails - Rails 3 - 使用“包含”进行选择?

转载 作者:行者123 更新时间:2023-12-03 01:46:06 25 4
gpt4 key购买 nike

这是一个包含以下内容的嵌套选择:

@items = Item.where("complete = ?", true).includes( :manufacturer, {:order=>[:supplier, :agent] })

这是一个繁重的查询,因为它从上述所有包含的表中提取 1000 行数据。

如何让查询仅选择特定字段?

  • 用户名,用户创建位置
  • order.created_at
  • 供应商名称
  • 代理名称
  • 制造商名称

最佳答案

ARel 中有一个 select 方法,但您必须使用正确的表名称(即复数,如果您有多态模型或者您正在使用 set_table_name 或其他类似的非标准做法,请注意)

@items = Item.
select('users.name', 'users.created_at', 'orders.created_at', 'suppliers.name', 'agents.name', 'manufacturers.name').
where(:users => { :fulfilled => true }).
includes(:orders => [:supplier, :agent], :manufacturer)

“我们可以使用带有连接的选择,不包括” - @Bhavesh_A_P

注意:

正如 @Bhavesh_A_P 上面指出的,带有 includesselect 不会产生一致的行为。看来,如果包含的关联没有返回结果,select将正常工作,如果返回结果,则select语句将不起作用。事实上,它将被完全忽略,这样您的 select 语句就可以引用无效的表名,并且不会产生错误。 selectjoins 将产生一致的行为。

关于ruby-on-rails - Rails 3 - 使用“包含”进行选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4047833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com