续上一节。
我们在页面中加上如下代码来限制public访问:
显然,只有admin才能新建Episode
我们来实现admin?方法
admin?在我们的页面中使用,它是一个helper方法,但是我们希望在controller里也可以使用:
好了,现在页面不会显示New Episode的链接了,但是我们通过url仍然可以访问new_episode_path
所以,我们还需要一个filter来做controller层的限制访问:
OK,下一式我们将实现admin?方法
我们在页面中加上如下代码来限制public访问:
- <!-- episodes/index.rhtml -->
- <% if admin? %>
- <%= link_to 'New Episode', new_episode_path %>
- <% end %>
显然,只有admin才能新建Episode
我们来实现admin?方法
admin?在我们的页面中使用,它是一个helper方法,但是我们希望在controller里也可以使用:
- # controllers/application.rb
- helper_method :admin?
- protected
- def admin?
- false
- end
好了,现在页面不会显示New Episode的链接了,但是我们通过url仍然可以访问new_episode_path
所以,我们还需要一个filter来做controller层的限制访问:
- # controllers/application.rb
- protected
- def authorize
- unless admin?
- flash[:error] = "unauthorized access"
- redirec_to home_path
- false
- end
- end
- # episodes_controller.rb
- before_filter :authorize, :except => :index
OK,下一式我们将实现admin?方法