1
我试图让我的ActiveRecord查询更有效率。我有用户和项目,用户对项目有一种感觉,并带有布尔响应。如何将所有数据保存在has_many中:通过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
这是所有罚款。我想要的是,上述两个查询在一个结果集中的组合。理想情况下,我希望能够查询用户项目的列表,并用这些结果获取他们对每个项目的响应。
如果这是直接的SQL,我可以这样做:
SELECT * FROM items INNER JOIN feelings ON items.id=feelings.item_id WHERE feelings.user_id = 1
这就给了我一切,我需要在一个表中。这也是ActiveRecord在查询User.find(1).items
时所做的,除了它在创建我的结果散列值之前抛弃感情表中的数据。
我该如何阻止它抛出intermediatry数据,从而为我节省额外的数据库查询?
任何帮助表示赞赏!