ruby-on-rails - español - rails authentication
Variable local indefinida o método `confirmar_at ''para#User (5)
Estoy usando Rails 3. Hay un posible duplicado here . Pero no resolvió mi problema, tampoco lo hizo ninguna otra solución.
Mi migración es la siguiente
class AddConfirmableToDevise < ActiveRecord::Migration
def change
change_table(:users) do |t|
t.confirmable
end
add_index :users, :confirmation_token, :unique => true
end
end
Tengo devise :confirmable
añadido en el modelo de User
.
Mi rake db:migrate
no da salida. y mi página de registro da el error:
undefined local variable or method ''confirmed_at'' for #User
¿Alguien tiene una pista?
A partir del último dispositivo, solo debe eliminar los comentarios de las siguientes líneas en la migración de usuarios de dispositivos. (2013 ....._ devise_create_users.rb)
# Confirmable
t.string :confirmation_token
t.datetime :confirmed_at
t.datetime :confirmation_sent_at
t.string :unconfirmed_email # Only if using reconfirmable
De acuerdo. Lo resolví. La migración está desactualizada. Generar nueva migración con el mismo código pero con otro nombre.
1. Ejecutar comando:
rails g migration add_confirmable_to_devise_v1
2.En el archivo de migración:
class AddConfirmableToDeviseV1 < ActiveRecord::Migration
def change
change_table(:users) do |t|
t.confirmable
end
add_index :users, :confirmation_token, :unique => true
end
end
3. Entonces
rake db:migrate
Estoy usando Mongoid y tengo este mismo error. Agregué estos campos y conseguí que rspec se pusiera verde en mis 16 ejemplos.
field :confirmation_token, :type => String
field :confirmed_at, :type => Time
field :confirmation_sent_at, :type => Time
field :unconfirmed_email, :type => String
Nota para mí. Alguien podría encontrarlo útil: lo que necesitamos son 2 comandos a continuación:
rake db:migrate:reset
rake db:reset
Voila! ¡Funciona!
Para vincular la respuesta de @ DevDude con la respuesta aceptada, si ya tiene un modelo de Users
existente al que necesita agregar confirmable, el código de migración completo para la versión de Devise actual a partir del 4/14 es:
class AddConfirmableToDeviseV1 < ActiveRecord::Migration
def change
change_table(:users) do |t|
# Confirmable
t.string :confirmation_token
t.datetime :confirmed_at
t.datetime :confirmation_sent_at
t.string :unconfirmed_email # Only if using reconfirmable
end
add_index :users, :confirmation_token, :unique => true
end
end