1

私は次のモデルを持っています

ユーザー

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

これを1つのステートメントとして取り出す方法がわかりませんか?

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 に答える