Пользовательский тест rspec выдает «неопределенную локальную переменную или метод подтвержденный_кат» - PullRequest
5 голосов
/ 22 октября 2011

мой тест rspec дает мне

 NameError:
   undefined local variable or method `confirmed_at' for #<User:0xca6ff98>

Моя пользовательская спецификация:

require 'spec_helper'

describe User do

    before(:each) do
      @user = Factory(:user)
    end
    # Factory will make sure that in the future if attributes are added the tests below don't break
    # Just as long as the Factory is updated for the new attributes as appropriate.

    context "email is null" do
      it "record is invalid " do
        @user.name = nil
        @user.should_not be_valid
      end
    end

    context "email is unique" do
      it "record is valid " do
        @user2 = Factory(:user)
        @user2 = @user.email
        @user2.should_not be_valid 
      end
    end

end 

Я не могу найти ссылку на Verified_at

У меня есть устройство1.4.8 Моя миграция пользователей была:

class DeviseCreateUsers < ActiveRecord::Migration
  def self.up
    create_table(:users) do |t|
      t.database_authenticatable :null => false
      t.recoverable
      t.rememberable
      t.trackable

      # t.encryptable
      # t.confirmable
      # t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both
      # t.token_authenticatable


      t.timestamps
    end

    add_index :users, :email,                :unique => true
    add_index :users, :reset_password_token, :unique => true
    # add_index :users, :confirmation_token,   :unique => true
    # add_index :users, :unlock_token,         :unique => true
    # add_index :users, :authentication_token, :unique => true
  end

  def self.down
    drop_table :users
  end
end

Моя таблица пользователей:

mysql> describe users;
+------------------------+--------------+------+-----+---------+----------------+
| Field                  | Type         | Null | Key | Default | Extra          |
+------------------------+--------------+------+-----+---------+----------------+
| id                     | int(11)      | NO   | PRI | NULL    | auto_increment |
| email                  | varchar(255) | NO   | UNI |         |                |
| encrypted_password     | varchar(128) | NO   |     |         |                |
| reset_password_token   | varchar(255) | YES  | UNI | NULL    |                |
| reset_password_sent_at | datetime     | YES  |     | NULL    |                |
| remember_created_at    | datetime     | YES  |     | NULL    |                |
| sign_in_count          | int(11)      | YES  |     | 0       |                |
| current_sign_in_at     | datetime     | YES  |     | NULL    |                |
| last_sign_in_at        | datetime     | YES  |     | NULL    |                |
| current_sign_in_ip     | varchar(255) | YES  |     | NULL    |                |
| last_sign_in_ip        | varchar(255) | YES  |     | NULL    |                |
| created_at             | datetime     | YES  |     | NULL    |                |
| updated_at             | datetime     | YES  |     | NULL    |                |
| last_name              | varchar(255) | YES  |     | NULL    |                |
| first_name             | varchar(255) | YES  |     | NULL    |                |
+------------------------+--------------+------+-----+---------+----------------+

Ответы [ 2 ]

7 голосов
/ 22 октября 2011

Похоже, вы пропустили «подтверждаемую» конфигурацию для Devise где-то по пути.Вы можете добавить три отсутствующих столбца самостоятельно или попробовать что-то вроде этого (см. Сообщение Reza.Hashemi в нижней части этой темы :

$ rails g migration addconfirmable

Затем отредактируйте миграцию следующим образом:

def self.up 
  change_table(:users) do |t| 
    t.confirmable 
  end 
end 

и, наконец, обычное:

$ rake db:migrate

Я думаю, что вышеупомянутый процесс должен добавить ваши три столбца:

  • confirmed_at :datetime
  • confirmation_token :string
  • confirmation_sent_at :datetime

для вас. Или вы можете сделать это вручную.

0 голосов
/ 22 июля 2013

Для Mongoid посмотрите на модель пользователя - необходимые поля могут быть закомментированы.Для меня они были:

## Confirmable
field :confirmation_token,   :type => String
field :confirmed_at,         :type => Time
field :confirmation_sent_at, :type => Time
field :unconfirmed_email,    :type => String # Only if using reconfirmable
...