既存のアプリの動作が変化し、大きな頭痛の種になっている状況があります。
私のアプリには写真があります。写真のステータスは次のとおり"batch", "queue", or "complete"
です。アプリ内の既存の写真はすべて「完全」です。
99%の場合、完全な写真のみを表示する必要があります。既存のすべてのコードベースでは、Photosへのすべての呼び出しを完全な写真のみに制限する必要があります。
ただし、写真のアップロードと分類に関連する画面では、バッチまたはキューに入れられた写真を表示するために、そのデフォルトのスコープをかなり簡単にオーバーライドできる必要があります。
他の多くの人と同様に、特定の状況でデフォルトのスコープを簡単にオーバーライドする方法を見つける必要があります。私はこれらの質問(1、2)を調べましたが、私が探しているものに答えていないようです。
私が機能したいコードはこれです:
class Photo < ActiveRecord::Base
...
default_scope where(:status=>'complete')
scope :batch, unscoped.where(:status=>'batch')
scope :queue, unscoped.where(:status=>'queue')
...
end
ただし、それは機能しません。スコープメソッドをラムダでラップしようとしましたが、それも機能しませんでした。
default_scopeには手荷物が付属していることに気付きましたが、オーバーライドで使用できない場合scope :complete ...
は、既存のアプリの写真へのすべての呼び出しを追加して組み合わせ、.complete
未処理の写真をフィルタリングするために追加する必要があります。
この問題をどのように解決しますか?