4

私はレールに不慣れで、コンソールで問題が発生しています。ユーザーテーブルにレコードを追加して、いくつかの関数をテストしたいと思います。ただし、または同様の機能を実行するたびに、User.create正常に完了し、すぐにロールバックされます。即時のロールバックを防ぐにはどうすればよいですか?

サンドボックスモードではありません。

以下は、ユーザーを作成しようとしたときにコンソールに表示される出力です。ユーザーが存在することを示し、すぐにトランザクションをロールバックします。次にUser.all、トランザクションが実際にロールバックされたことを示すために実行します。

>>> User.create(first_name: "derek", last_name: "harrington", email: "derek@gmail.com")
 (0.1ms)  begin transaction
 User Exists (0.2ms)  SELECT 1 FROM "users" WHERE "users"."email" = 'derek@gmail.com' LIMIT 1
 (0.1ms)  rollback transaction
 => #<User id: nil, first_name: "derek", last_name: "harrington", email: "derek@gmail.com", password_digest: nil, credit_card_id: nil, address_id: nil, created_at: nil, updated_at: nil> 
>>> User.all
 User Load (0.3ms)  SELECT "users".* FROM "users" 
 => [] 

これらの変更を永続的にして、ロールバックを防ぐにはどうすればよいですか?

編集:

これが私のUserモデルの内容です

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

  validates :first_name, presence: true, length: { maximum: 50 }
  validates :last_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: true
  validates :password, confirmation: true, length: { minimum: 6, maximum: 50 }
  validates :password_confirmation, presence: true
end
4

2 に答える 2

4

つまり、パスワードの確認を提供していなかったようです。そのため、保存されませんでした。

于 2012-03-26T01:32:03.627 に答える
0

それは変です。

構成オプションを追加しましたか?もしそうなら、それらをよりよく確認してください。

非常にシンプルなRailsアプリを試して、動作を確認することもできます。

于 2012-03-26T01:29:59.920 に答える