2013-07-17 54 views
0

我有一個hstore列,用於在Prawn(pdf構建器)中構建表。數據將包含給定月份的記錄。由於它是hstore,所使用的密鑰可能會每天都在變化,所以這需要動態變化。在對象中生成動態hstore密鑰調用

我需要確定:

1什麼獨特的按鍵均採用當月

我創建了一個幫手,發現在一個月中使用的唯一鑰匙。這些將被用作列標題。

keys(@users_logs) 
# this returns an array like - ["XC", "PIC", "Mountain"] 

該表將顯示該月份的用戶dutylog數據。對於測試...如果我明確調用已知的hstore鍵......數據顯示正確。但是,自從它的hstore ...我不知道表列將在生產中。

爲了進行測試,我調用了已知的hstore鍵......這將爲每個工作日誌創建對象錶行數據。

@users_logs.map do |dutylog| 
     [ dutylog.properties["XC"], 
      dutylog.properties["PIC"], 
      dutylog.properties["Mountain"] 
      ] 
end 

但是,既然這是hstore ...我不知道在生產中調用什麼鍵。所以,我需要使上述迭代動態化。

我試過,沒有成功,遍歷每個dutylog條目,然後遍歷每個唯一鍵並輸出一個「dutylog.properties [x]」調用每個鍵值......但是,這只是輸出數組關鍵值。我嘗試在塊中使用send(),但這沒有幫助。

@users_logs.map do |dutylog| 
    [ keys(@users_logs).each { |k| dutylog.properties[k] }.join(",") ] 
end 

關於如何讓「dutylog.properties [k]」動態的任何想法?

回答

0

採取了一些撓頭......但談到了將退出容易

這將建立行的蝦表

def hstore_duty_log_rows 
    [keys(@users_logs)] + 

    @users_logs.map do |dutylog| 
     keys(@users_logs).map { |key| dutylog.properties.keys.include?(key) ? "#{dutylog.properties[key]}" : "0" } 
    end 
end