短い答え:いいえ。できるだけロジックのビューをきれいに保つことはできません。さらに重要なのは、1つのコントローラやモデルに多くのロジックを積み重ねるのではなく、安らかなセットアップを使用する方が良いことです。ここでは、ユーザーの認証について説明します。通常、ユーザーがアクションに対してログインしていることを確認するには、before_filterを使用します。ですからコントローラのbefore_filterを使うことができます。渡されたメソッドを使用して、オブジェクトが保護されているかどうかを確認します。そのオブジェクトが保護されている場合は、そのユーザーが現在認証されているかどうかを確認します。
前のフィルタでは、代替操作にリダイレクトできます。好ましくは、パスワードフォームを使用するよう設定します。私はおそらくそれのための別のコントローラを作成するだろう。あなたが好きなセッションまたは認証と呼ぶことができます。パスワードフォームに新しいアクションを設定し、作成アクションを設定します。新しいビューは、ある種の隠しフィールドにpage_idを含める必要があります。または、ネストされたリソースを使用してそのルート内にpage_idを保持することができます。例えば:のようなルートを作成します
resources :pages do
resource :session, :only => [:new, :create]
end
:
あなたのcreateアクションで
/pages/1/session/new
/pages/1/session (POST)
は、あなたがしてセッションストアのようなセットアップ何かが(パスワードが正しい提供)することができます。認証チェックでは、そのセッションストアの値を確認するだけです。
私は、単純化のためにMVCを破る魅力的なアイデアによって誤解を招きました。あまりにも多くの努力でそれをクリアしていただきありがとうございます。 – Isabaellchen
それは簡単に落ちる誘惑です。しかし、ページへのアクセスを制限する方法を拡張したい場合はどうすればよいでしょうか?後ですべてのページを表示するログインIDなど。そうすれば、あなたは既にそれの基礎を成し遂げている仕事のいくつかを敷いておくでしょう。 – agmcleod