プロジェクト:
動的レポート システムを作成しています。
メトリックは、レポートされるデータの目的を定義します。例えば:
「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 の関係を定義できることはわかっていますが、別の関係レイヤーを追加するのは非常に複雑に思えます。