2012-03-27 2 views
0

모델이 저장 상태에 있는지 (before_validate와 after_save 사이에 있는지) 알아야합니다.저장 상태의 activerecord 모델을 나타내는 속성?

class ModelA < ActiveRecord::Base 
    before_save: do_before 

    def do_before 
    modelb.create(:attr => 123, :ref => self) 
    end 
end 

class ModelB < ActiveRecord::Base 
    before_create: do_before 

    def do_before 
    self.ref.my_attr = 321 
    self.ref.save! unless self.ref.is_saving? 
    end 
end 

"is_saving?"이 필요합니다. 내 프로젝트의 모든 모델 인스턴스에 대한 속성 이를 구현하는 가장 좋은 방법은 무엇입니까?

+0

아마도 ActiveRecord :: Base를 상속 한 시스템에서 모든 모델에 상속 될 기본 모델 클래스를 만들고 is_saving 특성을 선언합니다. –

답변

0

ActiveRecord의 :around_save 콜백을 사용하여 :before_save:after_save 사이에 인스턴스 변수를 설정 한 다음 저장할 수 없습니까? 어쨌든, 그 질문은 나에게 너무 분명하지 않습니다. is_saving? 방법의 목적은 무엇입니까?

+0

이것은 내가하려고하는 것입니다 : modela에서 modelb before_save 레코드를 생성하는 것입니다. modelb에서 before_create 콜백 함수는 modela의 속성을 변경하고 modela가 is_saving이라면? 그것은 modela.save를해서는 안됩니다! (다른 경우에는 modela.save를 실행해야합니다!) – Jonas

+0

나는 마지막으로 언급 한 내용을 더 잘 설명하기 위해 문제의 루비 코드를 편집했습니다. – Jonas

관련 문제