2012-10-29 82 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