0

我有一个 hstore 列,用于在 Prawn(pdf 生成器)中构建一个表。数据将包含给定月份的记录。由于它是 hstore,因此使用的密钥可能每天都在变化,因此这需要是动态的。

我需要确定:

1 该月使用了哪些唯一键

我创建了一个助手来查找当月使用的唯一键。这些将用作列标题。

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

该表将显示该月的用户工作日志数据。用于测试...如果我明确调用已知的 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]”动态化的任何想法?

4

1 回答 1

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
于 2013-07-17T18:35:40.820 回答