【问题标题】:before_filter :except a devise action not workingbefore_filter :除了设计操作不起作用
【发布时间】:2013-02-25 22:13:18
【问题描述】:

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

我的ApplicationController 中有一个before_filter 和一个: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

【问题讨论】:

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


    【解决方案1】:

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

    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?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-09
      • 2022-01-18
      • 1970-01-01
      相关资源
      最近更新 更多