2013-07-16 34 views
0

我想使用hstore鍵作爲表列標題。我的方法是簡單地映射一個rails查詢,它將返回多個記錄中的所有鍵,然後將uniq打印到數組中。從軌道中的hstore數據查詢返回一個uniq鍵數組

我將在Prawn中構建表格,使用靜態和動態列標題......就像這樣..但是,這當然不起作用。

[["DATE", "LOCATION", "DAY OFF", "START", "END" + @users_options.select("properties").map { |k,v| ",#{k}" }]] 

如何迭代用戶日誌並只輸出uniq鍵?

我只是嘗試這樣做......似乎靠近但是還沒有成型

a = [] 
user.useroptions.select(:properties).collect{ |k,v| a << k } 
+0

它容易得到從一個記錄@ users_options.keys鍵....但是,從多個記錄中獲取密鑰並不容易。 – hellion

+0

我可以做的一件事就是簡單地循環記錄並將所有hstore哈希合併到一個哈希中......不確定如何在不破壞的情況下執行此操作。然後,從一個散列獲取uniq密鑰。 – hellion

回答

0

我創建了一個輔助方法:

def keys(user) 
    keys = [] 
    user.useroptions.select(:properties).each do |opt| 
    a = opt.properties.keys 
    keys << a 
    end 

    keys.flatten.uniq 
end 

這遍歷所有hstore記錄,抓起鑰匙,然後放平散列,並只放uniq值

+0

現在,我遇到的問題是鍵的返回值是一個數組。我需要以某種方式將這個數組嵌入已經存在於靜態數組中的靜態值中,而不會破壞數組.. – hellion

0

爲了完成這項工作,我將靜態數組項移動到幫助器中,並使用'unshift'方法......以便將一個數組吐出到Prawn桌子建造者。

def keys(user) 
    keys = [] 
    user.useroptions.select(:properties).each do |opt| 
    a = opt.properties.keys 
    keys << a 
end 

keys.flatten.uniq 

keys.flatten.uniq.unshift("DATE", "LOCATION", "DAY OFF", "START", "END") 

然後我滑我的助手到對蝦表

[keys(@users_logs)] + 

    ....table rows