Rails 中构造 sql 查询以仅从数据库中选择某些列的方式是什么,我有一些大数据字段,我想避免从连续定期 ajax 调用中加载这些字段。不必要的阅读是资源消耗和缓慢的。
@itemlist = Item.find(:all, :conditions => { .... } ) #this select all columns
我正在寻找SELECT name, address FROM users;
而不是SELECT * FROM users;
Rails 中构造 sql 查询以仅从数据库中选择某些列的方式是什么,我有一些大数据字段,我想避免从连续定期 ajax 调用中加载这些字段。不必要的阅读是资源消耗和缓慢的。
@itemlist = Item.find(:all, :conditions => { .... } ) #this select all columns
我正在寻找SELECT name, address FROM users;
而不是SELECT * FROM users;
导轨 3:
Item.select("name, address").where( .... )
利用:select
构造。试试这个:
@itemlist = Item.select('name, address', conditions: { .... } )
对于以前版本的 Rails:
@itemlist = Item.find(:all,:select => 'name, address', :conditions => { .... } )
使用 Arel(又名 Rails 3),使用:
Item.where(...).select("name, address")
此外,如果您添加具有 :include => ... 的范围,似乎 .select 会被忽略。
@itemlist = Item.select('name, address').where(...#some condition)
如果要从 中选择特定列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 应用程序。
试试这个:
@itemlist = Item.find(:all, :select => "name, address", :conditions => { .... } )