簡體   English   中英

基於表值的紅寶石迭代

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM