1

我有以下型号

用户

has_many :leave_balances

leave_balance

belongs_to :user
belongs_to :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)

4

2 回答 2

1

我最近遇到了同样的事情。我改用 Squeel,现在我开心了。具体来说,指定外连接的语法非常简洁:

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

https://github.com/ernie/squeel

于 2012-10-29T13:08:07.507 回答
0

您可以将哈希传递给嵌套连接joins的方法

所以你会做

User.joins(leave_balances: :leave_type)

但这将执行一个INNER JOIN,我认为你需要的是一个LEFT OUTER JOIN

因此您可能必须join按照此处所述手动编写

于 2012-10-29T10:58:46.013 回答