我正在创建一个动态报告系统。
指标定义报告数据的目的。例如:
“ 13 烧房子。”
管理员会通过一个表单将“房屋火灾”定义为一个指标,记者只需通过另一种形式添加“13”。
然而,还有另一个层面:我希望报告在连接的数据点之间冗长:
“ 13 在 1月影响 42 个人(或 16 家庭)期间发生火灾/强>verbage存储在表“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):“#在(日期)期间招募的新志愿者”
(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
Partial _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 %>
我知道我可以把它拆分成一个单独的表,并在两个表之间定义parentID和childID之间的关系,但是添加另一个关系层似乎过于复杂。
答案 0 :(得分:1)
您应该将“父”和“子”元素(如属性)视为度量标准,而不是尝试重用相同的模型。另一种方法是创建另一个名为“Events”或其他的模型,这些事件与程序相关,而Metrics与Events相关。我可能也会创建一个“度量类型”,而不是直接与每条记录关联的前缀或后缀。
我认为尝试在同一级别处理所有度量标准,并尝试使用parentID和childID来循环创建一个句子,这比仅仅为关系添加另一个层要复杂得多。
希望这足以推动...