1

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

我有before_filter一个ApplicationController动作:except

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

我的 EULA 页面上有链接:

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

我正在使用设计: 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仍然会调用。

4

1 回答 1

3

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

config/application.rb

config.to_prepare do
  # ...

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

参考:

如何跳过设计的 SessionsController 的 before_filter?

于 2013-02-25T22:53:27.740 回答