我正在尝试将 ActiveRecord 对象中的 MySQL 时间戳转换为另一种时间戳格式。我的方法采用一个 ActiveRecord 记录数组并返回一个哈希数组,其中包含带有格式化时间戳的时间戳字段:
def convert_mysql_timestamps(records)
ary = []
hash = {}
records.each_with_index do |record, i|
record.attributes.each do |field, value|
if time_columns.include?(field) and value then
hash[field] = value.strftime("%Y-%m-%dT%H:%M:%S%z")
else
hash[field] = value
end
end
ary[i] = {}
ary[i] = hash
end
ary
end
但是,在ary[i] = hash
分配时,所有ary
元素都设置为散列。
有没有更好的方法来转换记录的时间戳字段?(我不需要将记录保存回数据库。)另外,如何让数组捕获记录的每个单独的哈希表示?
输入:
[#<Vehicle id: 15001, approved_at: "2011-03-28 10:16:31", entry_date: "2011-03-28 10:16:31">, #<Vehicle id: 15002, approved_at: "2011-03-28 10:16:31", entry_date: "2011-03-28 10:16:31">]
期望的输出:
[{"id"=>15001, "approved_at"=>"2011-03-28T10:16:31-0700", "entry_date"=>"2011-03-28T10:16:31-0700"}, {"id"=>15002, "approved_at"=>"2011-03-28T10:16:31-0700", "entry_date"=>"2011-03-28T10:16:31-0700"}]