2009-05-21 10 views
0

pdfとその扶養者にすべての居住者を表示しようとしていますが、扶養者には居住者の外部キーuser_idによって識別されるスタンドはありません。例:resident1.id = 5 --- dependent3.user_id = 5平均従属3はresident1に属しているため、従属スタンドを表示したい場合、何をすべきか、すべての住人とその扶養者とスタンド情報を表示したい扶養家族が居住する扶養家族のスタンド情報になること。今では私のPDFファイルを生成することができますので、私の情報は、ハッシュ内にある必要があります。..モデル内のハッシュ内にifステートメントを作成する

私のコードは

データ= [] C = 1 residents.eachんです| | R データ< < {"フルネーム" => r.firstname、 "姓" => r.lastname、 "ストリート番号" => r.stand.street_no、 "ストリート名" => r.stand.streetname} .stand || r.user_id = r.id エンド

は私の扶養を覚えていて、住民が同じテーブルにあるが、住民はそれを持っているのuser_id外商キーのみ依存していません。

私の出力は、扶養家族ではない立場の住民の情報のみを表示します。

してください私は私ができることなら知らないhelp.causeしていく所存ですが、誰ハッシュのように内部のif文:

residents.eachが何| R | データ< < {r.firstname、 "姓" => r.lastname} r.stand || r.user_id = r.id { "ストリート・ナンバー" => r.stand.street_no、 "街路名" => r.stand.streetname} .stand.street_no、等が有効であると仮定すると

答えて

1

.standであっても(それがfalse可能性があり、まだr.user_id == r.id一部がtrueの場合に呼び出されるので)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. 条件付きで句がtrueの場合は、余分なキーに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 
関連する問題