Так у меня есть 3 типа пользователей:Rails разрешить доступ к одной странице, не ограничивая весь контроллер
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
Тогда любой (даже если они не вошли в систему) имеет доступ к этим страницам.
Как бы я мог сделать что-то подобное?
Редактировать
По предложению Тило, я добавил следующее в файл application_controller.erb:
def update_successful
skip_before_filter :authorize
end
Чтобы иметь возможность обслуживать update_successful страницу после того, как обычный пользователь редактирует запись , Однако я получаю эту ошибку:
undefined method `skip_before_filter' for #<HomeController:0x007ff782aeb6f0>
Как вы используете эти два метода? Как 'before_filter'? – Thilo
Да, before_filter. – kakubei