1

プロジェクト:

動的レポート システムを作成しています。

メトリックは、レポートされるデータの目的を定義します。例えば:

13件の住宅火災」

管理者は 1 つのフォームで「住宅火災」をメトリックとして定義し、レポーターは別のフォームで単に「13」を追加します。

ただし、別のレベルがあります。接続されたデータ ポイント全体で詳細なレポートが必要です。

" 1 月に13件の住宅火災が発生し、42人 (または16家族) が影響を受けました "

動詞はテーブル "metrics" に保存され、データはテーブル "metrics_data" に保存されます。

上記のサンプルのメトリクス テーブルは次のとおりです。

metric_id | parentID | childID | prefix       | suffix      | program_id
    1     |     1    |   1     |              | house fires |    1
    2     |     1    |   2     | during       |             |    1
    3     |     1    |   3     | affecting    | individuals |    1
    4     |     1    |   4     | (or          | families    |    1

文ベースの編成の鍵は、parentID - childID の関係です。

metrics_data テーブルは次のとおりです。

metric_id | value |     date
    1     |  13   |   01/01/12
    2     |  nil  |   01/01/12
    3     |  42   |   01/01/12
    4     |  16   |   01/01/12

目標:

ビューを整理して (parentID をループ)、メトリックを詳細に表示したいと考えています。

プログラム #1

(parentID: 1): " #個人 (または#家族)に影響を与える(date)中の#家屋火災"

(parentID: 2): " (date)中の#避難所( #人に#泊を提供) "

プログラム #2

(parentID: 1): " # (date)の間に募集された新しいボランティア"

(parentID: 2): " #ボランティアが(date)の間に#時間奉仕しました"

コード:

class Program < ActiveRecord::Base
  has_many :programs_metrics
  has_many :metrics, through: :programs_metrics
end

class Metric < ActiveRecord::Base
  has_many :programs_metrics
  has_many :metrics, through: :programs_metrics
end

部分的な _program.html.erb (programs/index.html.erb 用):

<% program.metrics.each do |metrics| %>
  <div class="row offset1">
   <% program.metrics.each do |pid| %> #how do I loop here based on parentID, sorted by childID?
     <%= pid.prefix %>
     #
     <%= pid.suffix %>
    <% end %>
  </div>
<% end %>

これを別のテーブルに分割して、2 つのテーブル間で parentID と childID の関係を定義できることはわかっていますが、別の関係レイヤーを追加するのは非常に複雑に思えます。

4

1 に答える 1

1

同じモデルを再利用しようとするのではなく、「親」要素と「子」要素をメトリクスの属性のように扱う必要があります。別の方法は、「イベント」などと呼ばれる別のモデルを作成することです。これらのイベントはプログラムに関連しており、メトリックはイベントに関連しています。各レコードにプレフィックスまたはサフィックスを直接関連付ける代わりに、おそらく「メトリック タイプ」も作成します。

すべてのメトリクスを同じレベルで処理しようとして、parentID と childID を使用してそれらをループして文を作成しようとすることは、関係に別のレイヤーを追加するよりもはるかに複雑だと思います。

うまくいけば、これで十分なプッシュになります...

于 2013-01-08T15:02:10.187 に答える