이 코드를 작성하는 더 좋은 방법이 있습니까? 뭔가처럼 그냥 내가 느끼는 저와 잘 앉지 않는 정말 '와 같은 레일'나는 이미 알고 있어야한다 :레일즈 : belongs_to를 통해 레코드 저장 및 외래 키 설정
belongs_to :parent_in_use
belongs_to :parent_template
def after_create
new_parent_in_use = ParentInUse.create!(self.parent_template.attributes)
self.update_attribute(:parent_in_use_id, new_parent_in_use.id)
end
기록을 만든 후 내가 선택한 부모 템플릿을 복용하고 parent_in_use
기록을 만드는 오전 그것을 바탕으로 이렇게하면 템플릿이 변경되고 in_use 레코드가 내 객체와 영원히 함께 살게됩니다. ParentInUse 및 ParentTemplate 클래스는 STI를 사용하여 Parent에서 상속합니다.
나는 이것이 충분히 간단해야한다고 확신하지만, 어떻게 해야할지 모르겠다. 기본적으로 나는 하나의 작업으로 레코드를 할당하고 싶다.
해당 레코드를 만들기 전에 current_model이 존재했는지 100 % 확신하고 싶었습니다. 모델이 유효하지 않은 경우 before_create 콜백에 도달하지 않는다고 가정합니다. – tsdbrown
그것은 유효한 가정입니다. 또한 모든 콜백은 단일 트랜잭션으로 래핑되며, 그 중 하나가 false를 반환하거나 오류가 발생하면 전체 트랜잭션이 롤백됩니다. 따라서 ParentInUse는 모든 과정이 성공하지 못하면 만들어지지 않습니다. – EmFi