2009-08-05 5 views
1

그래, 이건 좀 특이한 일이지만 데이터를 각각의 모델에 저장하는 일련의 데이터 수집 양식이 있습니다. 내가하고 싶은 일은 자동으로 각 양식에 공통적 인 공통 상위 (활동/이벤트 로그 - 개별 모델) 레코드를 삽입하는 것입니다. (모든 양식은 하위 레코드를 저장하기 전에이 모델에 내재 된 레코드를 저장합니다). 그래서 저장 순서가 다음과 같이 할 필요가 :Ruby/Rails - 하위 레코드를 만들 때 부모 레코드를 암시 적으로 생성 하시겠습니까?

1) 2) 요약 정보를 (사용자 ID, 레코드 유형, 타임 스탬프)를 포함하는 새로운 부모 레코드를 작성, 각 세부 양식 캡처 사용자 입력에 3) 새로운 부모를 캡처 삽입 PK 값 (같은 외래 키) 상세 기록 4) 다음 (5)을 저장, 사용자가 입력 한 데이터와 FK 데이터와 상세 기록을 채 웁니다) (또는 롤백을 커밋)에

나는이 방법을 수행 할 수 있습니다 - 이런 식으로 갈고리는 어디 있니? 분명히 이것을하기 위해 레일스의 기본 bahaviour를 재정의해야합니다. 공유 할 수있는 예제를 본 사람이 있습니까?

TIA, 브랜든

P.S. 이것이베이스 접근 방식이라고 생각하기 전에, 활동/중요 이벤트가 발생하지만 기본 세부 정보를 사용할 수없는 유스 케이스를 처리해야합니다.
(부모 만 만들면 외부에서 가져온 데이터로 인해 발생할 수 있습니다.) 지금 당장은이 문제에 대한 Rails 솔루션을 탐색하는 데 주로 관심이 있습니다.

답변

4

원하는대로 원하는대로 여러 가지 방법이 있습니다. 자녀의 기록 모델

  • before_save 필터,

     
    
    class YourModel < ActiveRecord::Base 
        before_save :create_parent 
    
        def create_parent 
        #do something here 
    
        end 
    
    end 
    

  • 액티브 레코드 관찰자

    이것은 당신의 environment.rb에 파일에 간다 (A 관찰자 패턴을 따른다)

     
    
        config.active_record.observers = :yourmodel_observer 
    
    

    만들기 yourmodel_observer.rb 파일

    코드

     
        class YourModelObserver < ActiveRecord::Observer 
    
        def after_save(object) 
    
        end 
    
        def after_update(object) 
    
        end 
        end 
    
    

  • +0

    Rishav, 우수 - 나는 빠른 응답을위한 많은 -Thx을 찾고 있었어요 그냥 뭐! (내 머리 속 안개가 풀리기 시작했습니다!) – BrendanC