私はいくつかのモデルがあります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
スコープから禁止されたインスタンスを削除しますが、 "last"のようなスコープ、またはモデルが一般的にクエリされたときに削除します。または、禁止された範囲または隠された範囲に該当するインスタンスが特に呼び出された場合、レコードが見つかりません。私はまだ個々のスコープ(例:またはUser.hidden
)でこれらのインスタンスにアクセスできるようにしたいと思っていますが、私はむしろが最も一般的に使用されるクエリではなく余分な入力になります。
うわーを定義する必要があります!私は明日、妻がラップトップを壊し、Netflixを見るために私のマシンを命令したので、それを試さなければならないかもしれません。 –
美しい、ありがとう! –
クイックノートは、モデルを読み込み専用にしたので、 'where(:status_id => 1)'を使いました。私の人生を保存した 'default_scope'でした。ありがとう –