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