2

我有两个表“用户”和“lms_users”

class LmsUser
    belongs_to :user
end

class User
    has_one :lms_user
end

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

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

我该如何处理?

4

3 回答 3

0

:joins => "LEFT JOIN lms_users ON lms_users.user_id = users.id"

于 2012-09-19T14:04:40.107 回答
0

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

User.includes(:lms_user).all

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

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

将。

更多关于这个

于 2012-09-19T17:45:57.990 回答
0

User.left_outer_joins(:lms_user)如果你在轨道上 5+

于 2020-11-03T14:59:30.850 回答