1

私たちのサイト全体に、非公開/公開/保留中、ダウンロード可能などの多くの属性を持つ共通のモデル、たとえばビデオがあります。

コントローラー、アクション、リクエスト パラメーター、および現在のユーザーに基づいて、特定の動画を表示から除外します。たとえば、ホームページでは、公開されている動画のみを表示したいと考えています。ホームページにログインしているユーザーがいる場合は、公開されているダウンロード可能な動画も表示したいと考えています。

また、ユーザーがサイトで検索を行ったときに Sphinx を使用して望ましくない動画を除外できるように、SQL クエリだけでこれらのフィルターを適用できるようにしたいと考えています。

これは、rails-authorization-plugin などの認証プラグインを使用して処理するのが最適ですか? 要するに、私たちの目標は、プログラマーが新しいアクションを追加するときに、特定のビデオを除外するのをうっかり忘れないようにすることです。私たちが探しているソリューションは、非常にプログラム的でなければなりません。

これが私が考えている解決策です(まだコードを書いていません)

  1. 承認プラグインを利用するか、コントローラまたはアクション レベルで定義された、表示されるビデオを設定できる独自のプラグインを作成します。

  2. has_many(:videos) または has_one(:video) の任意のモデルの関連付け拡張を作成します。これにより、関連付け内のビデオのファインダーをオーバーロードできます。

  3. 同様の方法で Video.find をオーバーロードして、現在のルールに基づいて表示するものを制限します。

4

1 に答える 1