例如,我有2种型号:嵌套查询
购买(belongs_to的:用户) 用户(的has_many:购买)
我要选择的是至少有一个所有用户采购。
在SQL我会写这样的:
SELECT * FROM `users` WHERE `id` IN (SELECT DISTINCT `buyer_id` FROM `purchases`)
还有一个问题:是否有覆盖阿雷尔任何完整的文档或书籍?
例如,我有2种型号:嵌套查询
购买(belongs_to的:用户) 用户(的has_many:购买)
我要选择的是至少有一个所有用户采购。
在SQL我会写这样的:
SELECT * FROM `users` WHERE `id` IN (SELECT DISTINCT `buyer_id` FROM `purchases`)
还有一个问题:是否有覆盖阿雷尔任何完整的文档或书籍?
嗯,我想回答我的问题... :)
buyers=purchases.project(:buyer_id).group(purchases[:buyer_id]) #<-- all buyers
busers=users.where(users[:id].in(buyers)) #<--answer
Rails的指南有AREL真正优秀的文档。
http://guides.rubyonrails.org/active_record_querying.html#conditions
Rails的API也是一些比较模糊的选项非常有用。我只是谷歌一个具体的术语“rails api”,它首先出现。
我不相信上面的代码发出嵌套查询。相反,它似乎会发出2个独立的SQL查询。您可能具有可比较的速度(取决于您对性能的担忧程度),但通过2次往返服务器,它不能提供嵌套查询的相同优势。