ActiveRecord クエリをより効率的にしようとしています。ユーザーとアイテムがあり、ユーザーはブール値の応答でアイテムについて感じています。
ここに私のモデルがあります:
ユーザー:
has_many :feelings
has_many :items, :through => :feelings
フィーリング:
belongs_to :user
belongs_to :item
attr_accessible :response
アイテム:
attr_accessible :name
したがって、次の方法でユーザーの感情のリストを取得できます。
User.find(1).feelings
そして、彼が感じているアイテムのリストを次の方法で取得できます。
User.find(1).items
これで問題ありません。私が望むのは、上記の 2 つのクエリを 1 つの結果セットに組み合わせることです。理想的には、ユーザーのアイテムのリストを照会し、それらの結果で各アイテムに対する応答を取得できるようにしたいと考えています。
これが単純な SQL である場合、次のことができます。
SELECT * FROM items INNER JOIN feelings ON items.id=feelings.item_id WHERE feelings.user_id = 1
これにより、必要なものがすべて 1 つのテーブルに表示されます。これは、クエリを実行するときに ActiveRecord が行うことでもありUser.find(1).items
ますが、結果のハッシュを作成する前に、フィーリング テーブルのデータを破棄します。
中間データの破棄を停止して、余分なデータベース クエリを節約するにはどうすればよいですか?
どんな助けでも大歓迎です!