在rails中构造sql查询的方式是什么,只从数据库中选择某些列,我有一些大数据字段,我想避免从连续的定期ajax调用中加载。不必要地阅读是资源消耗和缓慢。
@itemlist = Item.find(:all, :conditions => { .... } ) #this select all columns
我正在寻找SELECT name, address FROM users;
而不是SELECT * FROM users;
答案 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应用程序中起作用。