2010-02-12 2 views
1

나는 1 대 1 [0/1] 인 2 개의 테이블을 가지고 있습니다. 어쩌면 트리거를Rose :: DB :: Object를 사용하면, 관계가 발견되지 않으면 자동으로 오브젝트를 생성 할 수 있습니까?

# detailed_summary is the 1-to-1 relationship 
# if detailed_summary exist, get it 
# if not, create a new one with links? 
$obj->detailed_summary 

: 예를 들어

: 자동 Rose::DB::Object를 사용하여 관계 개체/행을 만들 수있는 방법이 있습니까?

답변

1

column trigger은 원하는 것이 아닙니다. "아직 존재하지 않는 경우 일을"당신의 목표를 달성하는 한 가지 방법은 최고의 밑줄과의 관계의 이름을 지정하고 다음을 수행하는 자신의 밑줄이없는 메서드를 작성하는 것 일 :

sub detailed_summary 
{ 
    my($self) = shift; 

    my $existing_object = $self->_detailed_summary(@_); 

    unless($existing_object) 
    { 
    # Create a new object 
    my $new_object = My::Summary->new(...); 

    # Assign it to its parent so it will be stored in the 
    # database when the parent is save()d, then return it. 
    return $self->_detailed_summary($new_object); 
    } 

    return $existing_object; 
} 

당신은 또한 수 생성 된 detailed_summary() 메소드를 생성 한 후 수동으로 (typeglob과 서브 루틴 참조를 사용하여) 또는 기존 서브 루틴을 감쌀 수있는 CPAN 모듈로 래핑하여 동일한 작업을 수행하십시오.

(위의 코드는 매우 일반적인 그리고 당신은 당신이 많은이 일을 끝낼 경우의 생성을 자동화 할 수 있어야합니다.)

+0

들으, 난 유사했다가 그 일을 어떤 방법이 있었지만, 확실 않네 그것은 같은 방식으로 캐시됩니다. urs는 훨씬 명확합니다. – Timmy

관련 문제