1

これは単純なもののはずですが、私は 1 日かけて取り組んできましたが、明確な答えがわかりません。

User、Evaluation、Job の 3 つの基本モデルがあります。ユーザーはジョブに取り組み、ジョブの所有者はユーザーを評価します。ユーザーは、多くのさまざまなジョブを持つことができます。各ジョブは、関連するユーザーを複数回評価します (ジョブ内では、関連する各ユーザーの評価は同じで、もちろんスコアは異なります)。

簡単に言えば、データを表形式 (Excel ワークブックのようなもの) で表示したいと思います。x 軸は評価名、y 軸はユーザー名です。

したがって、次のようになります。

        Evaluation 1  |  Evaluation 2  |  Evaluation 3
       _______________________________________________________
User 1   Good              Poor            Outstanding
User 2   Poor              Good            Good

x または y のいずれかでラベルを簡単に表示できますが、両方を表示することはできません。

Q1) 各ジョブ/ユーザー評価は、独自のデータベース レコードです。x 軸と y 軸にまたがる LABELS をどのように構成するかについての提案はありますか?

Q2) データ (たとえば、ユーザー 2 の評価 3) が正しく分類 (プロット) されていることを確認するにはどうすればよいですか? また、新しいユーザー (たとえば、ユーザー 3) が遅れてジョブに参加し、評価 1 または評価 2 を持っていない場合はどうなりますか...

どんな提案でも大歓迎です!

4

1 に答える 1

2

これを行う 1 つの方法は、ハッシュの配列を作成することです。各ハッシュには、ユーザーの評価と利用可能なすべての評価の配列が含まれています。

Evaluation.where(:job_id => 1)order('title').map{|e| e.title}.uniq

これにより、all_evaluations に似たものが得られます。

all_evaluations = ['eval1', 'eval2', 'eval3', 'eval4']

ユーザー評価のハッシュは次のようになります。

user_evaluations = {"UserA"=>{:eval1=>1, :eval3=>3}}, {"UserB"=>{:eval1=>1, :eval=>3}}

all_evaluationsヘッダー行のラベルと、各ユーザー レコードの eval のプルに使用されます。

<tr>
<% all_evaluations.each do |eval_header| %>
  <td><%= eval_header %></td>
<% end %>
</tr>

<% user_evaluations.each do |user| %>
  <tr>
    <td><%= user.keys %></td>
    <% all_evaluations.each do |eval| %>
      <td><%= user.values.first[eval.to_sym] %></td>
    <% end %>
  </tr>
end

ここにはバグや変更がほとんどないかもしれませんが、原則として機能するはずです。

于 2012-10-02T17:46:23.567 に答える