这是一个嵌套的 Select ,包含:
@items = Item.where("complete = ?", true).includes( :manufacturer, {:order=>[:supplier, :agent] })
这是一个繁重的查询,因为它从上面包含的所有表中提取1000行数据.
如何让查询只 Select 特定字段?
- 使用者姓名,用户.创建于
- 顺序创建于
- 供应商名称
- 代理人名称
- 制造商名称
这是一个嵌套的 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在上面指出的,select
和includes
不能产生一致的行为.如果包含的关联没有返回结果,select
将正常工作,如果返回结果,select语句将无效.实际上,它将被完全忽略,这样您的select语句就可以引用无效的表名,并且不会产生错误.select
和joins
会产生一致的行为.