tutorial rails español ejemplos descargar curso ruby-on-rails ruby-on-rails-3 devise

ruby-on-rails - español - ruby on rails pdf



¿Cómo omitir la necesidad de confirmar una actualización de dirección de correo electrónico con un dispositivo? (4)

Intente configurar Devise.reconfirmable o User.reconfirmable (o cualquiera que sea su modelo) en false. Puede configurarlo en config/initializers/devise.rb en esta línea:

# If true, requires any email changes to be confirmed (exctly the same way as # initial account confirmation) to be applied. Requires additional unconfirmed_email # db field (see migrations). Until confirmed new email is stored in # unconfirmed email column, and copied to email column on successful confirmation. config.reconfirmable = true

También puede usar el método update_column Active Record, que guarda un campo sin ejecutar devoluciones de llamada o validaciones.

Estoy usando Rails 3 con el nuevo dispositivo confirmable.

Quiero que los usuarios generalmente confirmen su dirección de correo electrónico. Al crear un nuevo usuario, puedo omitir el correo electrónico de confirmación con:

user.skip_confirmation!

Sin embargo, a veces necesito cambiar manualmente un correo electrónico en nombre de un usuario. Y esto no parece funcionar al cambiar los correos electrónicos. ejemplo:

@user = User.find_by_email(''[email protected]'') @user.email = ''[email protected]'' @user.skip_confirmation! @user.save!

Esto todavía requiere que el usuario confirme el correo electrónico. El correo electrónico no se está actualizando. Y el dispositivo está enviando un correo electrónico.

¿Algunas ideas? Gracias


Para las actualizaciones, puede seguir con update_attributes , o simplemente un simple save y skip_reconfirmation! (note el '' re'' en reconfirmación).

@user.skip_reconfirmation! respond_to do |format| if @user.update_attributes(params[:user]) ... end


Puede usar este tipo de código en su modelo # models/users.rb . Esto deshabilitará la confirmación de correo electrónico en la actualización:

def postpone_email_change? false end

o en tu control

def update user.email = params[:user][:email] user.skip_confirmation_notification! if user.save user.confirm end end


Si desea omitir solo la notificación por correo electrónico, haga lo siguiente:

@user.skip_confirmation_notification! @user.save