Ruby rails - 从数据库中只选择几列

时间:2012-04-21 05:06:25

标签: ruby-on-rails ruby ruby-on-rails-3 rails-activerecord

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

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

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

6 个答案:

答案 0 :(得分:108)

Rails 3:

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

答案 1 :(得分:26)

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

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

对于以前版本的Rails:

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

答案 2 :(得分:9)

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

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

此外,如果您使用具有以下内容的范围,则会忽略.select:include => ...

答案 3 :(得分:6)

@itemlist = Item.select('name, address').where(...#some condition)

答案 4 :(得分:2)

试试这个:

@itemlist = Item.find(:all, :select => "name, address", :conditions => { .... } )

答案 5 :(得分:1)

如果要从rails console中选择特定的列,则pluck(将起作用。 示例:

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应用程序中起作用。