该项目:
我正在创建一个动态报告系统。
指标定义了报告数据的目的。例如:
“ 13起房屋火灾。”
管理员将通过一个表格将“房屋火灾”定义为一个指标,记者将通过不同的表格简单地添加“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): " #房屋火灾在(日期)期间影响#个个人(或#个家庭)"
(parentID:2):“ (日期)期间的#个避难所提供#个过夜(对于#个个人)”
程序#2
(parentID: 1): " # (date)期间招募的新志愿者"
(parentID: 2): " #志愿者在(日期)期间服务#小时"
编码:
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(用于程序/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 %>
我知道我可以将其拆分为一个单独的表并定义两个表之间的 parentID 和 childID 之间的关系,但是添加另一个关系层似乎过于复杂。