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

标签 ruby-on-rails ruby-on-rails-3 activerecord select include

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

@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/

相关文章:

php - 如何减少获得此结果所需的查询数量

ruby-on-rails - ActiveRecord 模型构造函数在 Rails 中扮演什么角色(如果有)?

activerecord - Codeigniter 有几个像或这样的事件记录?

ruby-on-rails - 定制设备 Controller

ruby-on-rails - 如何在rails中的命名空间内生成 Controller

ruby-on-rails - Rails 参数 escape/unescape +

ruby-on-rails - Rails 设计 : user_signed_in? 不工作

ruby-on-rails - 在线运行 Rails 代码

ruby-on-rails - Rails将默认DateTime设置为now

ruby-on-rails - Paypal 按钮回调