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"}]