61

Rails 中构造 sql 查询以仅从数据库中选择某些列的方式是什么,我有一些大数据字段,我想避免从连续定期 ajax 调用中加载这些字段。不必要的阅读是资源消耗和缓慢的。

@itemlist = Item.find(:all, :conditions => { .... } ) #this select all columns 

我正在寻找SELECT name, address FROM users;而不是SELECT * FROM users;

4

6 回答 6

126

导轨 3:

Item.select("name, address").where( .... )

于 2012-04-21T13:37:32.170 回答
29

利用:select构造。试试这个:

@itemlist = Item.select('name, address', conditions: { .... } )

对于以前版本的 Rails:

@itemlist = Item.find(:all,:select => 'name, address', :conditions => { .... } )
于 2012-04-21T05:25:01.243 回答
11

使用 Arel(又名 Rails 3),使用:

Item.where(...).select("name, address")

此外,如果您添加具有 :include => ... 的范围,似乎 .select 会被忽略。

于 2012-04-21T05:26:04.710 回答
7
@itemlist = Item.select('name, address').where(...#some condition)
于 2012-04-26T09:19:32.363 回答
6

如果要从 中选择特定列rails consolepluck(将起作用。例子:

2.4.1 :007 > User.connection
2.4.1 :006 > User.all.pluck(:email)
   (0.3ms)  SELECT `users`.`email` FROM `users`
 => ["test@test.com", "another_test@test.com"] 

请注意,这也适用于 Rails 应用程序。

于 2018-06-27T01:23:17.957 回答
3

试试这个:

@itemlist = Item.find(:all, :select => "name, address", :conditions => { .... } )
于 2012-04-21T05:24:43.360 回答