我是新来的铁轨,我在控制台遇到了一些麻烦。我想将记录添加到我的用户表并测试一些功能。但是,每次我执行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
发布您的用户模型的内容。您还应该将'User.create'的结果分配给一个变量,以便检查错误。 – James 2012-03-26 01:32:54
我按照您的建议将结果分配给了一个变量,它似乎在变量中按预期工作。它只是不会留在数据库中。 – 2012-03-26 01:48:02
这只是一个未保存的'User'实例,重点是检查它的错误。如果你在变量'user'中有它,那么检查你从'user.errors'得到了什么。 – James 2012-03-26 01:49:04