gpt4 book ai didi

ruby-on-rails - :joins | change behavior inner join to left join

转载 作者:太空宇宙 更新时间:2023-11-03 16:54:58 35 4
gpt4 key购买 nike

我有两个表 'users' 和 'lms_users'

class LmsUser
belongs_to :user
end

class User
has_one :lms_user
end

当我编写 User.all(:joins => :lms_user) 时,它使用 Inner join 连接表。

我想要一个左连接。如何改变这种行为? (我不想使用 SQL 命令,只使用 Ruby 语法。)

我该如何处理?

最佳答案

您可以在没有 SQL 的情况下使用 includes 实现 LEFT JOIN,但前提是您指定了涉及连接表中的列的附加约束(或仅仅是一个 order 子句) (s).所以,

User.includes(:lms_user).all

不会生成 LEFT JOIN(而是生成两个单独的查询),但是

User.includes(:lms_user).where(:lms_user => {:role => 'admin'}).all

会。

关于此的更多信息

关于ruby-on-rails - :joins | change behavior inner join to left join,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12496165/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com