rails多个外连接语法

时间:2012-10-29 10:20:43

标签: ruby-on-rails-3 activerecord

我有以下型号

用户

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)

2 个答案:

答案 0 :(得分:1)

我最近遇到了同样的事情。我切换到Squeal,现在我很快乐了。具体来说,指定外连接的语法非常简洁:

result = User.joins { leave_balances.outer.leave_type.outer }.where { some_constraints }

https://github.com/ernie/squeel

答案 1 :(得分:0)

您可以将哈希值传递给nested joins

joins方法

所以你会做

User.joins(leave_balances: :leave_type)

但这会执行INNER JOIN,我认为您需要的是LEFT OUTER JOIN

因此您可能需要手动将join写为described here