我有两个表''user'和'lms_users'
class LmsUser
belongs_to :user
end
class User
has_one :lms_user
end
当我写User.all(:joins => :lms_user)
时,它会使用内部联接连接表格。
我想要左连接。怎么能改变这种行为? (我不想使用SQL命令,只有Ruby语法。)
我该如何处理?
答案 0 :(得分:0)
:joins => "LEFT JOIN lms_users ON lms_users.user_id = users.id"
答案 1 :(得分:0)
您可以使用includes
在没有SQL的情况下拉出LEFT JOIN,但前提是您指定了包含连接表中列的其他约束(或仅仅是order
子句)。所以,
User.includes(:lms_user).all
不会生成LEFT JOIN(而是生成两个单独的查询),但
User.includes(:lms_user).where(:lms_user => {:role => 'admin'}).all
那样。
关于此的更多信息
答案 2 :(得分:0)
User.left_outer_joins(:lms_user)
(如果您在5岁以上)