2

私はMichaelHartlのチュートリアル(第6章)に取り組んでいます。Railsコンソールで新しいユーザーを作成しようとすると:

user = User.new(name: "Lord of Darkness", email: "LoD@hell.com")

私は得る:

 => #<User id: nil, name: "Lord of Darkness", email: "LoD@hell.com",
 created_at: nil, updated_at: nil, password_digest: nil>

どちらが正しいようです。しかし、保存しようとすると、次のようになります。

irb(main):007:0> user.save
  ←[1m←[36m (0.0ms)←[0m  ←[1mbegin transaction←[0m
  ←[1m←[35mUser Exists (0.0ms)←[0m  SELECT 1 AS one FROM "users" WHERE LOWER("us
  ers"."email") = LOWER('mhartl@example.com') LIMIT 1
  ←[1m←[36m (0.0ms)←[0m  ←[1mrollback transaction←[0m
  => false

これは間違いなく私が望むものではありません。私のuser_specはすべてのテストに合格しています。私のuser.rbは次のようになります。

class User < ActiveRecord::Base
  attr_accessible :email, :name, :password, :password_confirmation
  has_secure_password

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

  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 }
  validates :password, presence: true, length: { minimum: 6 }
  validates :password_confirmation, presence: true
end

この保存の問題の原因は何ですか?このエラーを解決しないと、チュートリアルを続けることができません。

4

1 に答える 1

2

あなたのエラーは、Userあなたが作成しているパスワードがないという事実に起因していると思います。

Userモデルはパスワードを検証し、その存在を要求しますが、コマンドラインから新しいaを作成するとき、モデルはまだパスワードを持っていませUserん。

于 2012-09-26T14:16:18.337 に答える