【发布时间】:2016-10-12 14:34:22
【问题描述】:
这更像是一个 SQL 问题,但我尝试在 Rails 中解决这个问题:
我有一个User 和has_many :days。 Days 有一个status,它可以是available 或booked。我想找到所有只有可用天数的用户。我用:
User.includes(:days).where.not(days: { status: 'booked' }).references(:days)
生成的 SQL 查询如下所示:
SELECT * FROM "users" LEFT OUTER JOIN "days" ON "days"."user_id" = "users"."id" WHERE ("days"."status" != 'booked')
结果包含具有两种状态的用户。 感谢您知道如何解决这个问题!
【问题讨论】:
-
不知道如何在rails中进行,但查询需要更像这样:
SELECT * FROM users WHERE id NOT IN (SELECT DISTINCT user_id FROM days WHERE status = 'booked') -
“谁只有可用的日子”是什么意思?您想要某一天(或一组天)有空的用户还是根本没有预订天数的用户?
-
@max 我试图找到全天都有空的用户。我将把它合并成一个
.where(dated: from..too)范围。
标签: mysql sql ruby-on-rails postgresql associations