before_filter:除了设计动作不起作用

时间:2013-02-25 22:13:18

标签: ruby-on-rails devise before-filter

每个新用户必须接受EULA才能使用我的RoR应用程序提供的服务,因此当用户第一次登录我的网站时,他/她必须接受EULA,如果他/她不想要接受,他/她可以退出,所以:

我的before_filterApplicationController有一个:except动作:

before_filter :check_eula, :except => [:destroy]

我的EULA页面上有链接:

<%= link_to('Logout', destroy_user_session_path, :method => :delete, :class => link_class) %>

我正在使用Devise: https://github.com/plataformatec/devise/blob/master/lib/devise/rails/routes.rb

destroy_user_session DELETE /users/sign_out                   {:controller=>"devise/sessions", :action=>"destroy"}

问题在于,当用户点击“退出”链接而不接受EULA时,似乎仍会调用:check_eula

1 个答案:

答案 0 :(得分:2)

我不知道为什么以下是有效的,但这是解决方案:

config/application.rb

config.to_prepare do
  # ...

  Devise::SessionsController.skip_before_filter :check_eula, :only => [:destroy]
end

参考:

How to skip a before_filter for Devise's SessionsController?