sábado, 15 de diciembre de 2012

Rails: Modificar módulos de devise

Si ya tenemos instalado devise con nuestro modelo User, pero posteriormente queremos añadir alguna de las extensiones, tendremos que realizar una migración sobre el modelo para añadir los campos que requiere el módulo.

Por ejemplo, para añadir comfirmable a devise:

En el módulo comfirmable, vemos que los campos necesarios son:

required_methods = [:confirmation_token, :confirmed_at, :confirmation_sent_at]

Por tanto, generamos la migración

$ rails g migration AddConfirmableToUser confirmation_token:string:uniq confirmed_at:datetime confirmation_sent_at:datetime unconfirmed_email:string
Que nos quedará así:

class AddConfirmableToUser < ActiveRecord::Migration
  def change
    add_column :users, :confirmation_token, :string
    add_index :users, :confirmation_token, :unique => true
    add_column :users, :confirmed_at, :datetime
    add_column :users, :confirmation_sent_at, :datetime
    add_column :users, :unconfirmed_email, :string
  end
end


Ahora, en User, descomentamos :confirmable.

Ya solo queda configurar la confirmación a nuestro gusto en condig/initializers/devise.rb:
Por ejemplo...

config.allow_unconfirmed_access_for = 1.days #esperar 1 dia antes de bloquear
config.reconfirmable = true # confirmar el cambio de email
Y con esto tenemos incluido el nuevo módulo