我有一个关于Rails中否定嵌套查询的问题 www.example.com
我有两个模型:Profile
和Task
,通过外键Task#profile_id
连接。我的目标是根据配置文件是否包含特定state
中的任务来选择配置文件。为此,我使用了一个嵌套查询,它返回配置文件id,并将它们提供给主查询,如下所示:
# Profiles containing any stopped task
Profile.where(
id: Task.where(state: "stopped").select(:profile_id)
)
...效果很好然而,当我尝试用not
否定嵌套查询时:
# Profiles containing no started task
Profile.where.not(
id: Task.where(state: "started").select(:profile_id)
)
...它不起作用-我总是得到一个空的结果集。(当然,数据库包含否定和非否定情况的条目!)
任何帮助赞赏:)
(P.S.我知道嵌套查询在性能方面很糟糕,但是对于给定的数据模型,我无法提出更好的方法:-/也很高兴听到关于这方面的建议!)
1条答案
按热度按时间cuxqih211#
只需设置一个关联并加入它即可。
至少有一个已停止任务的配置文件
没有停止任务的配置文件:
x
停止任务数的配置文件: