неопределённая локальная переменная или метод подтвержден для пользователя #User - PullRequest
18 голосов
/ 02 февраля 2012

Я использую 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 модель.

Мой rake db:migrate не выводит. и моя страница регистрации выдает ошибку:

undefined local variable or method 'confirmed_at' for #User

У кого-нибудь есть подсказка?

Ответы [ 5 ]

26 голосов
/ 02 февраля 2012

Хорошо. Я решил это. Миграция устарела. Создайте новую миграцию с тем же кодом, но с другим именем.

Команда 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
19 голосов
/ 15 января 2013

Что касается последней версии, вам просто нужно удалить комментарии из следующих строк о миграции пользователей devise .. (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
16 голосов
/ 16 апреля 2014

Чтобы связать ответ @ DevDude с принятым ответом - если у вас уже есть существующая модель Users, к которой необходимо добавить подтверждающий, полный код миграции для версии Devise, действующей по состоянию на 4/14: 1002 *

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
14 голосов
/ 20 ноября 2012

Примечание для себя. Кто-то может найти это полезным: Нам нужны 2 команды:

    rake db:migrate:reset 
    rake db:reset

Вуаля! Это работает!

4 голосов
/ 31 марта 2012

Я использую Mongoid и получил эту же ошибку.Я добавил эти поля и получил rspec, чтобы стать зеленым на моих 16 примерах.

field :confirmation_token,   :type => String
field :confirmed_at,         :type => Time
field :confirmation_sent_at, :type => Time
field :unconfirmed_email,    :type => String
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...