我有以下型号
用户
has_many :leave_balances
leave_balance
belongs_to :user
belongs_to :leave_type
leave_type
has_many :leave_balances
我想输出一个表格式,通过请假类型显示用户名及其余额。 并非每个用户都可以拥有所有余额,即需要外连接。
我想看到这样的事情:
Employee Annual Leave Sick Leave
Bob 10
Fred 9
Sara 12 15
我不确定如何将其作为单一陈述来解决?
我在想像User.joins(:leave_balances).joins(:leave_type)
答案 0 :(得分:1)
我最近遇到了同样的事情。我切换到Squeal,现在我很快乐了。具体来说,指定外连接的语法非常简洁:
result = User.joins { leave_balances.outer.leave_type.outer }.where { some_constraints }
答案 1 :(得分:0)
您可以将哈希值传递给nested joins
的joins
方法
所以你会做
User.joins(leave_balances: :leave_type)
但这会执行INNER JOIN
,我认为您需要的是LEFT OUTER JOIN
因此您可能需要手动将join
写为described here