Attribut inconnu erreur dans ruby on rails
Je vais à travers le railstutorial.org livre et obtenir de l'attribut Inconnu erreur dans le code
Mon Utilisateur.rb fichier de code est
# == Schema Information
#
# Table name: users
#
# id :integer not null, primary key
# name :string(255)
# email :string(255)
# created_at :datetime not null
# updated_at :datetime not null
#
class User < ActiveRecord::Base
attr_accessible :email, :name, :password, :password_confirmation
validates :name,presence:true,length: { maximum:50 }
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 }
before_save { |user| user.email = email.downcase }
end
et mon user_spec.rb fichier de code est
require 'spec_helper'
describe User do
before do
@user = User.new(name: "Example User", email: "[email protected]" , password:"foobar", password_confirmation: "foobar")
end
subject { @user }
it { should respond_to(:name) }
it { should respond_to(:email) }
it { should respond_to(:password_digest) }
it {should respond_to(:password) }
it {should respond_to(:password_confirmation)}
it { should be_valid }
describe "when name is not present" do
before { @user.name = " " }
it { should_not be_valid }
end
describe "when name is too long" do
before { @user.name = "a" * 51 }
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.save
end
it { should_not be_valid }
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 is not present" do
before { @user.password = @user.password_confirmation = " " }
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
end
et ce qui se passe dans le terminal est
ritesh@ritesh-desktop:~/projects/sample_app$ rails console
Loading development environment (Rails 3.2.9)
1.9.3p327 :001 > User.create(name: "Michael Hartl", email: "[email protected]", password: "foobar", password_confirmation: nil)
ActiveRecord::UnknownAttributeError: unknown attribute: password
from /home/ritesh/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_record/attribute_assignment.rb:88:in `block in assign_attributes'
from /home/ritesh/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_record/attribute_assignment.rb:78:in `each'
from /home/ritesh/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_record/attribute_assignment.rb:78:in `assign_attributes'
from /home/ritesh/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_record/base.rb:497:in `initialize'
from /home/ritesh/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_record/persistence.rb:44:in `new'
from /home/ritesh/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_record/persistence.rb:44:in `create'
from (irb):1
from /home/ritesh/.rvm/gems/ruby-1.9.3-p327/gems/railties-3.2.9/lib/rails/commands/console.rb:47:in `start'
from /home/ritesh/.rvm/gems/ruby-1.9.3-p327/gems/railties-3.2.9/lib/rails/commands/console.rb:8:in `start'
from /home/ritesh/.rvm/gems/ruby-1.9.3-p327/gems/railties-3.2.9/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
1.9.3p327 :002 >
veuillez donner quelques idée de comment faire pour exécuter corriger cette erreur!!
Ajouter une colonne mot de passe pour votre table users? Ou si vous ne voulez pas enregistrer les mots de passe ajouter
Comment ajouter une colonne je suis juste un débutant sur cette plate-forme
Via les migrations.
attr_accessor :password
à votre modèle.Comment ajouter une colonne je suis juste un débutant sur cette plate-forme
Via les migrations.
OriginalL'auteur Ritesh Mehandiratta | 2012-12-19
Vous devez vous connecter pour publier un commentaire.
Ajouter une colonne par la génération d'une migration:
Puis exécutez:
Cependant, il semble que vous tentez d'utiliser
has_secure_password
, si vous n'avez pas ajouté à votre modèle d'Utilisateur. Si c'est le cas, ajoutez la lignehas_secure_password
à votre modèle d'Utilisateur et exécuter cette migration à la place:OriginalL'auteur regulatethis