“ActiveRecord::UnknownAttributeError: attribut inconnu: email_confirmation” Erreur avec rspec

Je suis en cours d'exécution dans cette erreur lors de l'exécution de mes tests. J'ai vérifié pour s'assurer que tous les email_confirmations sont correctement orthographiés et (à moins que je suis fou) qu'ils sont. Je suis un peu un Rails de noob, donc il pourrait être quelque chose de simple.

Utilisateur Modèle

class User < ActiveRecord::Base
  attr_accessible :email, :email_confirmation, :first_name, :last_name,
                  :password, :password_confirmation
  has_secure_password

  before_save { |user| user.email = email.downcase }

  validates :first_name, presence: true, length: { maximum: 25 }
  validates :last_name, presence: true, length: { maximum: 25 }
  VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
  validates :email, presence: true, format: { with: VALID_EMAIL_REGEX },
                    uniqueness: { case_sensitive: false }
  validates :email_confirmation, presence: true
  validates :password, presence: true, length: { maximum: 6 }
  validates :password_confirmation, presence: true
end

Tests Rspec

require 'spec_helper'
describe User do
before { @user = User.new(email: "[email protected]",
first_name: "John", last_name: "Smith",
password: "foobar", password_confirmation: "foobar",
email_confirmation: "[email protected]") }
subject { @user }
it { should respond_to(:first_name) }
it { should respond_to(:last_name) }
it { should respond_to(:email) }
it { should respond_to(:email_confirmation) }
it { should respond_to(:password_digest) }
it { should respond_to(:password) }
it { should respond_to(:password_confirmation) }
it { should respond_to(:authenticate) }
it { should be_valid }
describe "when first name is not present" do
before { @user.first_name = " " }
it { should_not be_valid }
end
describe "when last name is not present" do
before { @user.last_name = " " }
it { should_not be_valid }
end
describe "when email is not present" do
before { @user.email = @user.email_confirmation = " " }
it { should_not be_valid }
end
describe "when password is not present" do
before { @user.password = @user.password_confirmation = " " }
it { should_not be_valid }
end
describe "when first_name is too long" do
before { @user.first_name = "a" * 26 }
it { should_not be_valid }
end
describe "when last_name is too long" do
before { @user.last_name = "a" * 26 }
it { should_not be_valid }
end
describe "when email format is invalid" do
it "should be invalid" do
addresses = %w[user@foo,com user_at_foo.org example.user@foo.
foo@bar_baz.com foo@bar+baz.com]
addresses.each do |invalid_address|
@user.email = invalid_address
@user.should_not be_valid
end      
end
end
describe "when email format is valid" do
it "should be valid" do
addresses = %w[user@foo.COM A_US-ER@f.b.org frst.lst@foo.jp a+b@baz.cn]
addresses.each do |valid_address|
@user.email = valid_address
@user.should be_valid
end      
end
end
describe "when email address is already taken" do
before do
user_with_same_email = @user.dup
user_with_same_email.email = @user.email.upcase
user_with_same_email.save
end
it { should_not be_valid }
end
describe "when password doesn't match confirmation" do
before { @user.password_confirmation = "mismatch" }
it { should_not be_valid }
end
describe "when email doesn't match confirmation" do
before { @user.email_confirmation = "[email protected]" }
it { should_not be_valid }
end
describe "when password confirmation is nil" do
before { @user.password_confirmation = nil }
it { should_not be_valid }
end
describe "when email confirmation is nil" do
before { @user.email_confirmation = nil }
it { should_not be_valid }
end
describe "with a password that's too short" do
before { @user.password = @user.password_confirmation = "a" * 5 }
it { should be_invalid }
end
describe "return value of authenticate method" do
before { @user.save }
let(:found_user) { User.find_by_email(@user.email) }
describe "with valid password" do
it { should == found_user.authenticate(@user.password) }
end
describe "with invalid password" do
let(:user_for_invalid_password) { found_user.authenticate("invalid") }
it { should_not == user_for_invalid_password }
specify { user_for_invalid_password.should be_false }
end
end
end

schéma.rb

ActiveRecord::Schema.define(:version => 20130417021135) do
create_table "users", :force => true do |t|
t.string   "first_name"
t.string   "last_name"
t.string   "email"
t.datetime "created_at",      :null => false
t.datetime "updated_at",      :null => false
t.string   "password_digest"
end
add_index "users", ["email"], :name => "index_users_on_email", :unique => true
end
Pouvez-vous coller votre DB schéma de la table que le dos de ce modèle?
Édité le post avec elle
Merci. Rails de support pour la confirmation de la validation intégrée, voir les suggestions ci-dessous.

OriginalL'auteur josephndenton | 2013-04-17