1

これはうまくいきます!しかし、JSON が 200 個のプログラムを返す場合、これはそれらの 200 個のプログラムもすべて出力します。しかし、ヘルパー メソッドを変更して、そのパーセンテージが最も高い TOP 5 のみを返すようにしたいと考えています。

これを実現するためにヘルパー メソッドを変更するにはどうすればよいですか?

PS: おそらく、これを行うための最良かつ専門的な方法は、モデル ファイルまたは実際に JSON を作成する ActiveRecord クエリ インターフェイスで "スコープ" や "順序" などを操作することです...私のリーグ!ベイビーステップでこれをやりたかった...それは後で...

4

2 に答える 2

2

以下を試してください

def patient_counts(program)
  sorted = program.patient_counts.sort { |a, b| b.money <=> a.money }
  sorted[0..4]
end

更新: データベースからフェッチされるレコードを 5 つに制限する

def patient_counts(program)
  program.registry_patient_counts.limit(5).order('patient_count_percentage DESC')
end
于 2013-03-03T03:35:57.547 に答える
1

患者をキー、患者.お金を値としてハッシュを作成します。これは、次のような方法で実現できます。

unsorted_patients = { }
program.patient_counts.each do |patient|
    sorted_patients[patient] = patient.money
end

次に、sort_by を使用してハッシュを 2 次元配列に並べ替えます。

sorted_patients = unsorted_patients.sort_by { |patient, money| money }
sorted_patients.reverse!

sorted_pa​​tients の最初の 5 つの要素は、次のように、最も多くのお金を持っている 5 人の患者とその患者が持っている金額を含む 2 要素の配列になります。

[[<Bob>, 150000], [<Mary>, 138000], [<Joe>, 125000],...]

そこから必要な情報を簡単に抽出できるはずです。

于 2013-03-03T03:38:57.980 に答える