1

複数のテーブル間で結合を行い、結果セットを json としてクライアントに返す RoR アプリがあります。一意の列値のみを送信する方法を理解するのに助けが必要です。たとえば、employee テーブルと department テーブルがある場合、2 つのテーブルを結合すると、次のように返されます。

Physics   John   
Physics   Joe
Math      Charlie
Math      Sheila

たとえば、重複した値を削除するデータをクライアントに返すにはどうすればよいですか

Physics => { John, Joe }
Math = > { charlie, Sheila }

不要な重複データの送信を減らしたい。

何かご意見は?

編集:

これに変更し(スタックオーバーフローで見つかりました)、機能しました:

@lec_hash = @lectures.inject({}) do | result, row |
    result[row.subject] = [] if result[row.subject].nil?
    result[row.subject] << row.name
    result
end
4

1 に答える 1

0

キーがサブジェクト名で、値がサブジェクトを選択した名前の配列であるハッシュを準備します

hash = Hash.new {|h,k| h[k] = [] }
result.each do |row|
  hash[ row.subject]  << row.name
end

仮定: resultは AR レコードの配列であり、モデルにはsubject(name人物の名前) 属性 (列)があります

そして変換するhash.to_json

于 2012-09-27T06:03:15.617 に答える