Sql ActiveRecord:获取关联属性不为null的记录

Sql ActiveRecord:获取关联属性不为null的记录,sql,ruby-on-rails,activerecord,Sql,Ruby On Rails,Activerecord,我有两个模型:SocialMediaPost和Metric。SocialMediaPost有许多:指标,而指标属于::social\u media\u post。我正在尝试编写一个查询,以选择metrics.short_link不为NULL的所有SocialMediaPost 一篇文章可以有1-3个指标。当我运行下面的查询时,当我期望一个由多个POST组成的ActiveRecord关系对象时,它返回[] SocialMediaPost.includes(:metrics).where.not(m

我有两个模型:SocialMediaPost和Metric。SocialMediaPost有许多:指标,而指标属于::social\u media\u post。我正在尝试编写一个查询,以选择metrics.short_link不为NULL的所有SocialMediaPost

一篇文章可以有1-3个指标。当我运行下面的查询时,当我期望一个由多个POST组成的ActiveRecord关系对象时,它返回[]

SocialMediaPost.includes(:metrics).where.not(metrics: {short_link: nil})
如何调整查询以捕获我要查找的内容?

尝试以下方法:

SocialMediaPost.includes(:metrics).where("metrics.short_link IS NOT NULL")
对于大于4.0的Rails和

SocialMediaPost.includes(:metrics).where.not('metrics. short_link' => nil)

返回一个[]和一个弃用警告:弃用警告:看起来您急于加载以下表之一:social_media_Post,字符串SQL代码段中引用的度量。您的代码看起来很好,让我怀疑生成的查询是否不正确。你能从SocialMediaPost.includes:metrics.where.notmetrics:{short\u link:nil}发布SQL查询到\u SQL吗。此外,发布社交媒体帖子中的行以及您希望与查询匹配的度量可能会有所帮助。以下是生成的sql:SELECT\social\u media\u posts\.*from\social\u media\u posts\WHERE\metrics\。\short\u link\不为空。我不确定这是否是侥幸,但当我今天运行相同的查询时,它返回了预期的结果,同时我对杨回答的评论中也出现了相同的反对警告。