私はいくつかのモデルを持っていbelong_to :status
ます。
ステータスは次のとおりです。
- アクティブ
- 隠れた
- 禁止された
ステータスごとにスコープを設定し、ユーザーや他のいくつかのコンテンツモデルに適用しますがUser
、例を見てみましょう。
習慣から、私は書くUser.find(15)
かUser.all
、またはUser.last(5)
または@category.users
それを変える理由はないと思います。実際、私をわがままと呼んでください、しかし私はそれを変えたくありません。この種のタスクをより高いレベルで処理でき、何度も再入力する必要がないように感じます。
User.active.where(...)
User.active
User.active.last(5)
@category.users.active
それは型破りなようです。残念ながら、これらのモデルは多くのインスタンスで使用されているため、おそらくモデルレベルで、禁止または非表示のモデルを事前に選別する方法が必要です。たとえば、禁止されたインスタンスをall
スコープから削除しますが、「最後」のようなスコープや、モデルが一般的に照会された場合も同様です。または、禁止または非表示のスコープに該当するインスタンスが具体的に呼び出された場合、レコードが見つかりませんでした。User.banned
個々のスコープ(またはUser.hidden
)を介してこれらのインスタンスにアクセスできるようにしたいのですが、最も一般的に使用されるクエリではなく、追加の入力を使用したいと思います。