【发布时间】:2018-02-19 01:28:34
【问题描述】:
我在superhero 和superpower 两个模型之间有一个rails 连接表。现在我有 3 个不同的 superpower id,我想要所有的 superheroes,其中包含所有选定的 superpowers
为此,我正在尝试执行以下操作:
matches = Superhero.all
matches = matches.joins(:superpowers).where('superpowers.id = ?', 17).where('superpowers.id = ?', 12).where('superpowers.id = ?', 6)
但这给了我一个空对象,即使我有 superheroes,它在我的联接表中有所有给定的 superpowers
上面生成的查询是:
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 两次(但它不应该影响我认为的结果)并且查询的其余部分似乎是正确的。
【问题讨论】:
标签: mysql ruby-on-rails ruby-on-rails-4 join activerecord