首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails使用联接关联提取值

Rails使用联接关联提取值
EN

Stack Overflow用户
提问于 2017-09-10 19:52:26
回答 1查看 41关注 0票数 3

我在两个模型superherosuperpower之间有一个rails连接表。现在我有了3种不同的superpower id,我想要所有的superheroes都有所选的superpowers

为了做到这一点,我试图做以下几点:

代码语言:javascript
复制
matches = Superhero.all
matches = matches.joins(:superpowers).where('superpowers.id = ?', 17).where('superpowers.id = ?', 12).where('superpowers.id = ?', 6)

但是这给了我一个空对象,即使我有superheroes,它在我的联接表中有所有给定的superpowers

从上面生成的查询是:

代码语言:javascript
复制
SELECT "superheroes".* FROM "superheroes" INNER JOIN "superheroes_superpowers" ON "superheroes_superpowers"."superhero_id" = "superheroes"."id" INNER JOIN "superpowers" ON "superpowers"."id" = "superheroes_superpowers"."superpower_id" WHERE (superpowers.id = 17) AND (superpowers.id = 17) AND (superpowers.id = 12) AND (superpowers.id = 6)

因此,奇怪的是,它尝试使用id 17两次检查superpower (但不应该影响结果,我认为),其余的查询似乎是正确的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-10 19:56:33

尝试使用in子句

代码语言:javascript
复制
superpowers_ids = [17,12,6]
matches = Superhero.all
matches = matches.joins(:superpowers).where('superpowers.id in (?)', superpowers_ids)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46144962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档