我正在尝试从其他模型(Corporacion)创建用户, 我在Corporacion模型中写道:
after_create :createUser
def createUser
@user = Usuario.create(nombre: "aa", corp_id: 3, email: "aa@aa", password: 123456, password_confirmation: 123456, rol: 3)
@user.save
end
但是当我创建一个Corporacion时,没有创建用户(我使用rails 4.1和ruby 1.9.3)
答案 0 :(得分:3)
调用create
可保存有效对象。因此,您不需要在此之后致电save
。但我们知道它没有得救。首先怀疑是验证错误。
要调试保存,您可以使用create!
方法代替create
。如果您的保存失败,它将引发异常。但使用create!
以及其他" bang"方法不是很好的做法。因此,我建议您不要在生产代码中使用它。
如果create!
有效并且create
不起作用,还有一个提示:
在您的用例中执行创建的最佳做法如下:
def createUser
user = Usuario.new(nombre: "aa", corp: self, email: "aa@aa", password: 123456, password_confirmation: 123456, rol: 3)
user.save ? true : user.errors
end
如果您的true
已创建,则该代码将返回成功结果(user
),否则将返回验证错误。因此,您可以在调用createUser
的代码中正确处理错误。而且它还将揭示为什么你的储蓄现在不起作用。