したがって、3種類のユーザーがいます。
admin
moderator
regular user
次のようなコントローラー全体のシステムでモデレーターと管理者のページをロックしています。
def authorize
unless User.find_by_id(session[:user_id]) and User.find_by_id(session[:user_id]).moderator == true
redirect_to login_url, :notice => "Please log in with a moderator account"
end
end
def authorize_admin
unless User.find_by_id(session[:user_id]) and User.find_by_id(session[:user_id]).admin == 1
redirect_to login_url, :notice => "Only admins can access the page you tried to access"
end
end
しかし、通常のユーザーに、複数のコントローラーの編集ページ (そしてもちろん更新アクション) へのアクセスを許可する必要があります。ただし、編集して更新するだけです。
私が行った場合:
before_filter :authorize, :except => :edit
その後、誰でも (ログインしていなくても) それらのページにアクセスできます。
どうすればそのようなことをすることができますか?
編集
Thilo の提案に従って、application_controller.erb ファイルに以下を追加しました。
def update_successful
skip_before_filter :authorize
end
通常のユーザーがエントリを編集した後に update_successful ページを提供できるようにするため。ただし、次のエラーが表示されます。
undefined method `skip_before_filter' for #<HomeController:0x007ff782aeb6f0>