このエラー何?
User
.left_joins(:books)
.where.not(books: {user_id: nil}).or(
User
.left_joins(:lovers)
.where.not(lovers: {user_id: nil})
)
( ArgumentError: Relation passed to #or must be structurally compatible. Incompatible values: [:left_outer_joins] )
メインの方にも、ORの方にも、両方に全く同じ joins をつけなければいけないみたいだ!
なんか冗長だよね?でも、そうなんだよ。
User
.left_joins(:books)
.left_joins(:lovers)
.where.not(books: {user_id: nil}).or(
User
.left_joins(:books)
.left_joins(:lovers)
.where.not(lovers: {user_id: nil})
)
Scope とかにまとめておくと良いかもしれないね!
class User < ApplicationRecord
...
scope :useful_joins, -> do
.left_joins(:books)
.left_joins(:lovers)
end
end
User
.useful_joins
.where.not(books: {user_id: nil}).or(
User
.useful_joins
.where.not(lovers: {user_id: nil})
)
Original by Github issue
チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。