web-dev-qa-db-ja.com

Ruby Rails-データベースから数列のみを選択

Railsでデータベースから特定の列のみを選択するようにSQLクエリを構成するには、連続した定期的なAjax呼び出しからの読み込みを避けたいいくつかの大きなデータフィールドがあります。時間がかかります。

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

を探しています SELECT name, address FROM users; の代わりに SELECT * FROM users;

50
Kapish M

Rails 3:

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

110
nyaa

:selectコンストラクトを使用します。これを試して:

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

以前のバージョンのRailsの場合:

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

Arel(別名Rails 3)を使用して、以下を使用します。

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

また、:include => ...を持つスコープを追加すると、.selectは無視されるようです。

10
Michelle Tilley
@itemlist = Item.select('name, address').where(...#some condition)
6
Kuberan

これを試して:

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

Rails consoleから特定の列を選択する場合は、pluck(が機能します。例:

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

これはRailsアプリからも機能することに注意してください。

1
eriel marimon