使用其他模型创建用户

时间:2017-02-07 13:42:55

标签: ruby-on-rails ruby-on-rails-4 model-view-controller

我正在尝试从其他模型(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)

1 个答案:

答案 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的代码中正确处理错误。而且它还将揭示为什么你的储蓄现在不起作用。