Xclusive
Xclusive

Reputation: 51

Disabling sessions for a single controller has been deprecated

The problem is;

class ApplicationController < ActionController::Base
  # Pick a unique cookie name to distinguish our session data from others'
  session :session_key => '_simple_blog'
  #session :disabled => true

  private #------------

    def authorize_access
      if !session[:user_id]
        flash[:notice] = "Please log in."
        redirect_to(:controller => 'staff', :action => 'login')
        return false
      end   
    end

end

the error message is

DEPRECATION WARNING: Disabling sessions for a single controller has been deprecated. Sessions are now lazy loaded. So if you don't access them, consider them off. You can still modify the session cookie options with request.session_options.

Can somebody point em in the right direction.

Thanks

Upvotes: 2

Views: 1277

Answers (1)

Michelle Tilley
Michelle Tilley

Reputation: 159115

You are receiving this warning because you are explicitly loading the session context via the session method. You should instead use request.session_options[:session_key] = 'new_session_key' from within an action, as the framework now lazily loads the context if necessary (as you saw). If you want to do this for all actions, create a method and use before_filter:

class ApplicationController < ActionController::Base
  before_filter :setup_session_key

  protected

    def setup_session_key
      # Pick a unique cookie name to distinguish our session data from others'
      request.session_options[:session_key] = '_simple_blog'
    end
end

Upvotes: 6

Related Questions