如何查看rails console活动记录错误?

时间:2015-10-30 18:40:25

标签: ruby-on-rails activerecord digest rails-console

当我尝试

2.1.5 :013 > User.create(id: 999999, first_name: 'bob', login: 'smithb',
last_name: 'smith', email: 'testuser@test.com', active: true)
(0.1ms)  BEGIN

我得到了

(0.1ms)  ROLLBACK
=> #<User id: nil, login: "smithb", password_digest: nil, created_at: nil, updated_at: nil, first_name: "bob", last_name: "smith", email: "testuser@test.com", roles: nil, active: true>
2.1.5 :014 > User
 => User(id: integer, login: string, password_digest: string, created_at: datetime, updated_at: datetime, first_name: string, last_name: string, email: string, roles: integer, active: boolean)

如何查看导致回滚的错误?

我可以看到模型中的验证器,我相信我有所有必需的字段,所以试图找出确切的错误

用户模型

2.1.5 :015 > User
=> User(id: integer, login: string, password_digest: string, created_at: datetime,
updated_at: datetime, first_name: string, last_name: string, email: string,
roles: integer, active: boolean)

更新 - 这是我需要的摘要。我仍然很想知道如何看到这个错误。

3 个答案:

答案 0 :(得分:2)

您可以尝试这种方式:

AsyncTask

检查错误和有效性:

@user = User.create(id: 999999, first_name: 'bob', login: 'smithb',
last_name: 'smith', email: 'testuser@test.com', active: true)

答案 1 :(得分:0)

只需添加!即可创建。

 User.create!(id: 999999, first_name: 'bob', login: 'smithb', last_name: 'smith', email: 'testuser@test.com', active: true)

答案 2 :(得分:0)

如果您想在验证失败时避免保存而不是ActiveRecord自动回滚,则必须对该对象执行new

2.1.5 :013 > user = User.new(id: 999999, first_name: 'bob', login: 'smithb', last_name: 'smith', email: 'testuser@test.com', active: true)
2.1.5 :014 > user.valid?
2.1.5 :015 > true/false
2.1.5 :016 > user.save

015false然后

2.1.5 :016 > user.errors #will show if any errors
  

TIP

create会在new然后save之后解雇我 save!会直接抛出ActiveRecord错误(如果有的话)

因此,更好的方法是

 > user = 2.1.5 :013 > User.new(id: 999999, first_name: 'bob', login: 'smithb', last_name: 'smith', email: 'testuser@test.com', active: true)
 > if user.valid?
 >  user.save
 > else
 >  "throw some error"
 > end