1. ホーム
  2. ruby-on-rails

[解決済み] ActiveRecordの検索で選択された列のみを返す機能

2023-01-17 17:11:10

質問

編集2

もしこれにつまずいたら、今度はpluckを使うので、両方の答えをチェックしてください。


私はかなり大きなカスタムデータセットを持っていて、それを json として echoe'd に返したいと思っています。ある部分は

l=Location.find(row.id)
tmp[row.id]=l

のようにしたいのですが。

l=Location.find(row.id).select("name, website, city")
tmp[row.id]=l

となっていますが、これはうまくいっていないようです。どうすれば動くようになるのでしょうか?

thx

編集1

または、含ませたい属性だけを配列で渡す方法はありますか?

どのように解決するのですか?

Rails 2の場合

l = Location.find(:id => id, :select => "name, website, city", :limit => 1)

...または...

l = Location.find_by_sql(:conditions => ["SELECT name, website, city FROM locations WHERE id = ? LIMIT 1", id])

この参照ドキュメント で使用できるオプションの全リストを提供しています。 .find で使用できるオプションの全リストを提供しており、 番号、ID、その他の任意のカラム/制約で制限する方法を含みます。

Rails 3でActiveRecordのクエリインターフェースを使う

l = Location.where(["id = ?", id]).select("name, website, city").first

参考 アクティブレコードのクエリインターフェース

これらの連鎖した呼び出しの順番を入れ替えることもできます。 .select(...).where(...).first - これらの呼び出しが行うのは、SQLクエリを構築し、それを送信することだけです。