단일 트랜잭션에서 User와 Employee를 생성해야하는데, 적절한 방법을 찾을 수 없습니다.단일 트랜잭션 (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
여기서 문제는 사용자가 생성 된 후에 예외가 발생하면 데이터베이스가 일치하지 않는다는 것입니다. 어떻게해야 제대로 할 수 있습니까?
글쎄, 나는 꽤 오랫동안이 벽돌 벽에 머리를 두드렸다. 이것에 대한 어떤 생각을 밝힐 도움이 있으면 대단히 감사하겠습니다!
미리 감사드립니다.
왜 사용자와 직원, 두 개의 서로 다른 모델 대부분은 각 직원이 하나의 사용자 이름 –
사용자가 직원없이 직원이있는 경우, 그것은 사용자가 있어야 존재할 수 있기 때문에 . 그래서 직원을 만들면 먼저 사용자를 만들어야합니다. –