如何防止Rails控制台对db事务立即执行回滚?

时间:2012-03-26 01:10:32

标签: ruby-on-rails ruby-on-rails-3 rails-console

我是rails的新手,我在控制台遇到了一些麻烦。我想将记录添加到Users表并测试一些功能。但是,每次执行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

2 个答案:

答案 0 :(得分:4)

所以看起来你没有提供密码确认,这就是它没有保存的原因。

答案 1 :(得分:0)

那很奇怪。

您是否添加了一些配置选项?如果是这样,请更好地审查它们。

您还可以尝试使用非常简单的rails应用来验证行为。