【问题标题】:where clause with includes包含包含的 where 子句
【发布时间】:2015-10-09 08:57:56
【问题描述】:

我有一个 User 模型,它与 Identity 模型有 has_many 关系。 我想用 where 子句执行includes 查询。

User.includes(:identities).where("identities.provider = 'facebook')

但它给了我错误。

PG::UndefinedTable: 错误: 缺少表的 FROM 子句条目 “身份”

虽然它适用于连接

User.joins(:identities).where("identities.provider = 'facebook')

我不想使用范围。我只想使用where,就像我使用joins 子句一样。

【问题讨论】:

    标签: sql ruby-on-rails


    【解决方案1】:

    来自APIdoc

    如果您想为包含的模型添加条件,您必须 明确引用它们

    条件中使用includes时,需要在末尾添加.references。以下应该可以工作

    User.includes(:identities).where('identities.provider = ?', 'facebook').references(:identities)
    

    【讨论】:

    • references有什么特殊原因吗?为什么我们不能像普通加入一样做
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-06
    • 2012-06-08
    • 2017-08-27
    • 2013-02-28
    • 2013-05-23
    • 1970-01-01
    • 2015-10-30
    相关资源
    最近更新 更多