2009-05-21 4 views
0

pdf에 모든 거주자를 표시하려고하지만 해당 부양 가족은 거주자의 외래 키 user_id로 식별되는 대가를 갖고 있지 않습니다. 예 : resident1.id = 5 --- dependent3.user_id = 5 평균 depend3은 resident1에 속하므로 종속 스탠드를 표시하려면 무엇을해야하며 모든 거주자와 그 부양 가족 및 스탠드 정보를 표시하고 싶습니다. 부양 가족이 속한 거주자 정보. R | 내 PDF 파일을 생성 할 수 있도록 해주기 내 정보모델의 해시 내부에서 if 문 만들기

내 코드

데이터 = [] C = 1 residents.each 할 것이다 .. 해시 안에 있어야 | 데이터 < < { "Fullname"=> r.firstname, "성"=> r.lastname, "번지 수"=> r.stand.street_no, "번지 이름"=> r.stand.streetname} .stand || r.user_id = r.id 끝

내 부양 가족을 기억하고 주민들은 같은 테이블에 있지만 주민들이 그것을 가지고 USER_ID foreigh 키에만 의존하지 않습니다.

내 출력에는 부양 가족이 아닌 거주자의 정보 만 표시됩니다.

하시기 바랍니다 내가 할 수있는 경우에 잘 모릅니다 help.cause 할 의사가 있지만, 사람의 해시처럼 내부 if 문 :

residents.each가 할 | R | 데이터 < < {r> 이름> r.firstname, "성"=> r.lastname} r.stand || r.user_id = r.id { "거리-번호"=> r.stand.street_no, "거리 이름"=> r.stand.streetname}

답변

1

가정하면 .stand.street_no는 등 유효 .stand 경우에도 (이 false 수 여전히 r.user_id == r.id 부분에 해당하는 경우라고 할 수 있기 때문에) false는 다음 작동 것 :

data = residents.map do |r| 
    hash = { "Fullname" => r.firstname, "Lastname" => r.lastname } 
    hash.merge!({ "Street-Number" => r.stand.street_no, "street Name" => r.stand.streetname}) if r.stand || r.user_id == r.id 
    hash 
end 

설명 :

  1. 각 상주 개체를 반복하고 사용되는 것으로 알고있는 값을 포함하는 해시를 작성하십시오.
  2. if 절이 참일 경우 조건부로 merge!을 여분 키에 넣습니다.
  3. 해시를 반환합니다. map에 이렇게

data 배열을 미리 선언이나 루프의 각 패스에서 해시를 푸시 할 필요성을 제거한다.

0
data = [] 
residents.each do |r| 
    tmp_hash = {"Fullname" => r.firstname, "Lastname" => r.lastname} 

    if r.stand || r.user_id = r.id 
    tmp_hash.merge({"Street-Number" => r.stand.street_no, "street Name" => r.stand.streetname}) 
    end 

    data << tmp_hash 

end