0
我需要在一次交易中创建一个用户和一个员工,我找不到一个正确的方法来做到这一点。如何在单个事务中创建父项之后创建子记录(Rails 5)?
这里是模型。
class User < ApplicationRecord
has_one :employee
end
class Employee < ApplicationRecord
belongs_to :user
end
在控制器中,我从请求中接收参数以创建两个模型。
{
"username": "my_user",
"password": "12345",
"employee": {
"name: "my_name",
"lastname": "my_lastname"
}
}
所以我想这样做。
class UsersController < ResourcesController
def create
user = User.create! do |u|
u.username = params.username
u.password = params.password
end
employee = Employee.create! do |e|
e.name = params.name
e.lastname = params.lastname
e.user_id = user.id
end
end
end
这里的问题是,如果在创建用户后抛出一个异常,则数据库会出现不一致。 我该如何正确和安全地做到这一点?
嗯,我已经把头撞在这堵砖墙上很久了。任何帮助摆脱这一点,将不胜感激!
在此先感谢!
只是好奇,为什么两种不同的模式供用户和员工,大部分是每个员工都有一个用户名 –
因为用户可以在不雇员,如果雇员存在,它必须有一个用户存在。所以当我创建员工时,必须先创建用户。 –