![](/img/trans.png)
[英]Ruby on Rails: Sum table column row values based on other column data
[英]ruby iteration based on table values
我正在創建一個動態報告系統。
指標定義了報告數據的目的。 例如:
“ 13次房屋火災。”
管理員將通過一種形式將“房屋火災”定義為度量標准,而記者將通過另一種形式簡單地添加“ 13”。
但是,還有另一個層次:我希望報告在連接的數據點上比較詳細:
“一月份發生了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):“在(日期)期間招募了#名新志願者”
(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部分(對於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之間的關系,但是添加另一個關系層似乎過於復雜。
您可能應該將“父”和“子”元素視為度量標准的屬性,而不是嘗試重用同一模型。 一種替代方法是創建另一個稱為“事件”或任何其他模型,並且這些事件與程序有關,而度量標准與事件有關。 我可能還會創建一個“指標類型”,而不是直接與每個記錄關聯一個前綴或后綴。
我認為,嘗試在同一級別上處理所有度量標准,並嘗試使用parentID和childID遍歷它們以創建句子,這比在關系中添加另一層要復雜得多。
希望這足以推動...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.