2012-03-26 58 views
4

我是新来的铁轨,我在控制台遇到了一些麻烦。我想将记录添加到我的用户表并测试一些功能。但是,每次我执行User.create或类似的功能时,它都会成功完成,然后立即回滚。我如何防止立即回滚?如何防止Rails控制台执行数据库事务的立即回滚?

我不在沙箱模式。

下面是我在试图创建用户时在控制台中获得的输出。它表示用户存在,然后立即回滚事务。然后我运行一个User.all只是为了表明事务确实回滚了。

>>> User.create(first_name: "derek", last_name: "harrington", email: "[email protected]") 
(0.1ms) begin transaction 
User Exists (0.2ms) SELECT 1 FROM "users" WHERE "users"."email" = '[email protected]' LIMIT 1 
(0.1ms) rollback transaction 
=> #<User id: nil, first_name: "derek", last_name: "harrington", email: "[email protected]", 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+\-.][email protected][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 
+1

发布您的用户模型的内容。您还应该将'User.create'的结果分配给一个变量,以便检查错误。 – James 2012-03-26 01:32:54

+0

我按照您的建议将结果分配给了一个变量,它似乎在变量中按预期工作。它只是不会留在数据库中。 – 2012-03-26 01:48:02

+4

这只是一个未保存的'User'实例,重点是检查它的错误。如果你在变量'user'中有它,那么检查你从'user.errors'得到了什么。 – James 2012-03-26 01:49:04

回答

4

所以它看起来像你没有提供密码确认,这就是为什么它没有保存。

0

这很奇怪的内容。

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

你也可以尝试非常简单的rails应用程序来验证行为。

相关问题