ActiveRecordモデルで次のスコープを検討してください。
scope :onsale, where(:sales_state => "onsale")
scope :outdated, where(:sales_state => "outdated")
scope :onsale_or_outdated, where(" sales_state = 'onsale' OR sales_state = 'outdated' ")
Railsがでオーバーライド:onsaleすることを知っているのに:outdated、ではない:onsaleのは:onsale_or_outdatedなぜですか?
私のユースケース:
多くのスコープを持つリレーションオブジェクトがあり(保存された検索だとしましょう)、そのうちの1つはです:onsale。それから別の関係を作りたいのですが、今回はまたはのsales_stateどちらかonsaleになりたいですoutdated。
を使用するrelation.onsale_or_outdatedと、sales_stateはオーバーライドされず、新しい条件が追加されるだけです。
[...] WHERE "cars"."sales_state" = 'onsale' [...] AND (("cars"."sales_state" = 'onsale' OR "cars"."sales_state" = 'outdated'))
このコンテキストで'または'-ed条件を使用するにはどうすればよいですか?