2010-12-04 9 views
0

考えると与えられた:レール:オブジェクト内のレコードを選択すると、オブジェクトのID

Product.find(chosen_product_id) 

...非効率的である:

@products = Products.all 

# Do some code to choose a specific id of a record from @products 
chosen_product_id = 1 

現在のコードは2回目の呼び出しを行います。別のデータベースを呼び出さずに既存のオブジェクトから正しいレコードを選択するにはどうすればよいですか?

+3

ないあなたは 'を通じてSQLレベルでの条件を与えることができたときにことをしたいと思う理由を確認してください:conditions'または' WHERE' – Chirantan

+0

私は@Chirantanに同意します。非効率的なことはどういう意味ですか? 2回の呼び出しを行うことは非効率的ではないかもしれません。オブジェクトリレーショナルマッピングフレームワークでは、常にクエリを実行します。 – hade

+0

@Chirantan - 大きなレコードセットを取得し、大きなセットと選択したレコードの両方を2つの異なる目的で使用しています。 – jmccartie

答えて

1
@products.detect {|p| p.id == chosen_product_id } 
+0

Q: 'detect'の文書はどこにありますか? – Zabba

+0

http://ruby-doc.org/ruby-1.9/classes/Enumerable.html#M002707 –

関連する問題