当我尝试
时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)
更新 - 这是我需要的摘要。我仍然很想知道如何看到这个错误。
答案 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
在015
行false
然后
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