2012-02-02 19 views
15

Estoy usando Rails 3. Existe la posibilidad de duplicar here. Pero no resolvió mi problema, ni ninguna otra solución.variable local indefinida o método `confirm_at 'para #User

Mi migración es el 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ñade en User modelo.

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 

Anybody has a clue?

+2

debería saber que el los ayudantes de migración (como 't.confirmable') en diseño están en desuso a partir de versión 2.0. A partir de ahora, deberías estar [agregando diseñar columnas manualmente] (https://github.com/plataformatec/devise/wiki/How-To:-Upgrade-to-Devise-2.0-migration-schema-style) –

Respuesta

21

Ok. Lo solucioné La migración está desactualizada. Genera una nueva migración con el mismo código pero otro nombre.

1.Run comando:

rails g migration add_confirmable_to_devise_v1 

2.In 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.Then

rake db:migrate 
4

estoy usando Mongoid y consiguió este mismo error . Agregué estos campos y obtuve rspec para ir 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 
13

Nota para mí. Alguien puede resultar útil: Lo que necesitamos es 2 comandos siguientes:

rake db:migrate:reset 
    rake db:reset 

Voila! ¡Funciona!

+1

¿Cuáles son? 'db: reset' y' rake db: migrate: reset'? 'rake -D db: reset' o' rake -D db: migrate: reset' no muestra nada ... – Green

18

A partir de la última legado, sólo tiene que eliminar los comentarios de las siguientes líneas en la migración de los usuarios .. Idear (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 
14

para empatar @ DevDude de respuesta con la respuesta aceptada - si ya tiene un modelo Users existente a la que tenga que añadir confirmable, el código migración completa de la versión actual de Diseñar como de 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 
+0

Sí, esta es la respuesta correcta. De hecho, cuando genere inicialmente una migración de diseño, esto se comentará. – Donato

Cuestiones relacionadas