在Prawn中生成动态hstore密钥调用

时间:2013-07-17 15:59:13

标签: ruby-on-rails-3 dynamic prawn hstore

我有一个hstore列,我用它在Prawn(pdf builder)中构建一个表。数据将包含给定月份的记录。由于它是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]”动态的任何想法?

1 个答案:

答案 0 :(得分:0)

有点头疼......但结果很容易退出

这将构建Prawn表的行

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