2012-10-29 37 views
1

我有以下型号轨多个外部联接语法

用户

has_many :leave_balances 

leave_balance

belongs_to :user 
belongs_to :leave_type 

leave_type

has_many :leave_balances 

我要输出的表格式显示用户名字和他们的balan休假类型。 并非每个用户都可以拥有每个余额,即需要外连接。

我希望看到这样的事情:

Employee Annual Leave Sick Leave 
Bob  10 
Fred      9 
Sara  12    15 

我不确定如何得到这个作为一个单独的语句?

我想这样User.joins(:leave_balances).joins(:leave_type)

+1

http://stackoverflow.com/questions/3245201/left-outer-joins-in-rails-3 – Lichtamberg

回答

0

你可以传递一个哈希joins方法nested joins

,所以你会做

User.joins(leave_balances: :leave_type) 

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

所以你可能不得不手动编写described here

1

我最近面对这个完全相同的东西。我切换到Squeel,我现在更快乐。具体地,外连接用于指定语法非常干净:

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

https://github.com/ernie/squeel