Rails - スコープ上の論理演算子、それは可能ですか?
概要
2 つのスコープを持つゲーム (試合) を表すクラスがあります。
scope :home_lineuped, ->() { includes(:home_lineup).where(home_lineup: {lineuped: true }) }
scope :away_lineuped, ->() { includes(:away_lineup).where(away_lineup: {lineuped: true }) }
結果に対して論理演算子 Not And を使用して新しいスコープを作成したいのですが、可能ですか?
編集: どういう意味ですか?
想像してみろ: Match.All では、ID 1、2、3、4、5、6 の一致が得られます。
Match.home_lineuped では、ID 1、2、6 の一致が得られます。
Match.away_lineuped では、ID 3、4、6 の一致が得られます。
(Match.home_lineuped AND Match.away_lineuped) の結果は次のとおりです: 6。
したがって、Not (Match.home_lineuped AND Match.away_lineuped) の場合、ID: 1、2、3、4、および 5 と一致します。
編集終了
よろしくお願いします、
デビッド
解決策
あなたの意味は、Match.home_lineuped & Match.away_lineuped および Match.all - (Match.home_lineuped & Match.away_lineuped) です。
または、新しいスコープを作成します
スコープ :home_lineuped_and_away_lineuped, ->() { include(:home_lineup, :away_lineup).where(home_lineups: {lineuped: true },away_lineups: {lineuped: true }) }
スコープ :not_home_lineuped_and_away_lineuped, ->() { include(:home_lineup, :away_lineup).where.not(home_lineups: {lineuped: true },away_lineups: {lineuped: true }) }