本文介绍了activerecord 中的子查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
使用 SQL 我可以很容易地做这样的子查询
With SQL I can easily do sub-queries like this
User.where(:id => Account.where(..).select(:user_id))这会产生:
SELECT * FROM users WHERE id IN (SELECT user_id FROM accounts WHERE ..)如何使用 rails 的 3 activerecord/arel/meta_where 来做到这一点?
How can I do this using rails' 3 activerecord/ arel/ meta_where?
我确实需要/想要真正的子查询,没有 ruby 解决方法(使用多个查询).
I do need/ want real subqueries, no ruby workarounds (using several queries).
推荐答案Rails 现在默认这样做 :)
Rails now does this by default :)
Message.where(user_id: Profile.select("user_id").where(gender: 'm'))将产生以下SQL
SELECT "messages".* FROM "messages" WHERE "messages"."user_id" IN (SELECT user_id FROM "profiles" WHERE "profiles"."gender" = 'm')(现在"所指的版本号很可能是3.2)
(the version number that "now" refers to is most likely 3.2)
更多推荐
activerecord 中的子查询
发布评论