Rails 4.1在创建用户时进行回滚

时间:2014-09-24 06:26:09

标签: ruby-on-rails

在Rails控制台中:

user = HotelUser.create(:email=>'test@gmail.com')
(0.0ms) BEGIN
(0.0ms) ROLLBACK
=> #<HotelUser id: nil, userName: nil, email: "test@gmail.com", address1: nil, address2: nil, created_at: nil, updated_at: nil, password_digest: nil>`

我是rails的新手。我想在rails console中创建一个用户。但每次我都得到Rollback。为什么会发生这种情况。

3 个答案:

答案 0 :(得分:1)

快速而肮脏的检查方法是使用create!

例如:

pry(main)> User.create(:fname => "Bob")
   (0.1ms)  begin transaction
   (0.1ms)  rollback transaction
=> #<User id: nil, email: nil, encrypted_password: nil, fname: "Bob", lname: nil>

pry(main)> User.create!(:fname => "Bob")
   (0.1ms)  begin transaction
   (0.1ms)  rollback transaction
ActiveRecord::RecordInvalid: Validation failed: Email can't be blank, Password can't be blank

爆炸(!)和非爆炸之间的区别在于创造!会引发例外。

答案 1 :(得分:0)

您可以在Rails控制台中通过这些代码检查错误,并查看用户模型进行修复

=> user = HotelUser.create(email: 'test@gmail.com')
=> user.errors

答案 2 :(得分:0)

试试这个: T = HotelUser.new 然后,键入: t.email =&#34; test@Gmail.com" 最后一个命令, t.save

希望这能解决您的问题。 .create的问题在于你没有通过其他参数如创建日期和更新日期等等。