Undefined локальная переменная или метод `confirm_at 'для #User
Я использую Rails 3. Здесь возможно дублировать . Но это не решило мою проблему, и не было другого решения.
Моя миграция выглядит следующим образом
class AddConfirmableToDevise < ActiveRecord::Migration
def change
change_table(:users) do |t|
t.confirmable
end
add_index :users, :confirmation_token, :unique => true
end
end
У меня есть devise :confirmable
, добавленный в модель User
.
My rake db:migrate
не выводит результат. и моя страница регистрации показывает ошибку:
undefined local variable or method 'confirmed_at' for #User
У кого-нибудь есть ключ?
Ответы
Ответ 1
Ok. Я решил это. Миграция устарела. Создайте новую миграцию с тем же кодом, но с другим именем.
Команда 1.Run:
rails g migration add_confirmable_to_devise_v1
2.В файле миграции:
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
Ответ 2
Как и в случае с последним приложением, вам просто нужно удалить комментарии из следующих строк при миграции пользователей. (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
Ответ 3
Чтобы связать ответ @DevDude с принятым ответом - если у вас уже есть существующая модель Users
, к которой вам нужно добавить подтверждение, полный код перехода для версии Current Devise начиная с 4/14:
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
Ответ 4
Заметьте для себя. Кто-то может найти это полезным:
Нам нужны две команды ниже:
rake db:migrate:reset
rake db:reset
Voila! Он работает!
Ответ 5
Я использую Mongoid и получил ту же ошибку. Я добавил эти поля и получил rspec для использования на 16 примерах.
field :confirmation_token, :type => String
field :confirmed_at, :type => Time
field :confirmation_sent_at, :type => Time
field :unconfirmed_email, :type => String