Rails + Devise and remember_me (rememberable) by default

I’ve wanted to add an automatic remember_me for Devise by default (without a checkbox). First I’ve tried to do something like this:

def create
  params[:user].merge!(remember_me: true)
  super
end

Unfortunately it doesn’t seem to work. I have a rememberable strategy included in my User model, but still, remember_user_token cookie was not created. I don’t know why, even with remember_me option provided, it sets it to false. The easiest (and working) way to fix this, is to overwrite remember_me method, so it will always return true value.

# User of our portal
class User < ActiveRecord::Base

  devise :database_authenticatable, 
    :trackable, :encryptable, :confirmable, :recoverable,
    :registerable, :validatable, :lockable, :rememberable

  # @return [Boolean] user should be remembered when he logs in (with cookie)
  #   so he won't be asked to login again
  def remember_me
    true
  end
end

To be honest I didn’t have time to investigate it more deeply, so maybe there’s a better solution but this one works. After that, remember_user_token cookie is created and the session isn’t lost after user closes his browser.

Update

As Christoph mentioned in one of the comments, this is the “official” way to do this: , so probably there’s no better way ;)

3 Responses to : Rails + Devise and remember_me (rememberable) by default

  1. Christoph says:

    That’s actually also the “official” way as advised in this ticket: https://github.com/plataformatec/devise/issues/1513

  2. Wow ;) would never thought, that it is the “correct” way.

  3. Pingback: Devise + Omniauth + remember_me

Leave a Reply

Your email address will not be published. Required fields are marked *


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>