Как исключить одно действие контроллера из фильтра в Rails 3.07? - PullRequest
2 голосов
/ 28 августа 2011
class ApplicationController < ActionController::Base
  protect_from_forgery
  before_filter :check_session_expiry, :except => :login

Как исключить действие входа одного контроллера (например, контроллера пользователя)?

Ответы [ 3 ]

5 голосов
/ 28 августа 2011

Во-первых, я не на машине с рельсами для проверки, но должно работать следующее:

class UserController < ApplicationController
  skip_filter :check_session_expiry, :only => :foo

  # following is DEPRECATED as far as I know
  #skip_before_filter :check_session_expiry, :only => :foo

  def foo
  end
end
2 голосов
/ 28 августа 2011

Я бы просто переопределил check_session_expiry в вашем контроллере как пустой метод.

  class UserController < ...
    ...
    private
    def check_session_expire
      # optional if other actions shall still use the filter
      super unless self.action == 'login'
    end
  end
2 голосов
/ 28 августа 2011
class ApplicationController < ActionController::Base
  before_filter :check_session_expiry


  def check_session_expiry
     return true if self.class != UsersController && self.action == "login"
     # do your thing
  end
...