这是一个嵌套的 Select ,包含:

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

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

如何让查询只 Select 特定字段?

  • 使用者姓名,用户.创建于
  • 顺序创建于
  • 供应商名称
  • 代理人名称
  • 制造商名称

推荐答案

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"的select

注:

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

Ruby-on-rails相关问答推荐

在Ruby on Rails中获取堆栈级别太深错误(&Q)

有没有一种方法可以点击一个按钮来冒泡到父元素?

具有 IN 子句的参数化查询在 ruby​​-on-rails 的 blazer 工具中无法按预期工作

使用带有 Paper Trail gem 的子类

Ruby on Rails 让外键工作

正确更新其他列的更新列

验证模型属性大于另一个

如何从设计中删除/禁用注册

如何在两个日期之间生成随机日期和时间?

twitter bootstrap下拉突然不起作用

基于 2 列定义唯一主键

Rails 中页面视图的简单计数器

如何在 Ruby on Rails 中的 cookie 上设置 HttpOnly 标志

Rails - 使用 %W

Rails 3.1 在开发模式下非常慢,因为assets资源 ,怎么办?

link_to 将参数与 url 一起发送并在目标页面上抓取它们

非持久 ActiveRecord 模型属性

Rails:每个环境的初始化程序?

何时在 Ruby on Rails 中使用 lambda?

Date.current 和 Date.today 有什么区别?