最终游戏是让我的模型读取所有以“manager_”开头的表,并将记录序列化为JSON,以便传输到从属应用程序,该应用程序将JSON字符串作为同步过程写回其数据库。
即,DB> JSON> (通过网络传输)> JSON> DB
我现在遇到的问题是DateTime对象在末尾的时区内使用冒号进行编码,而mysql在尝试将属性写入db时正在进行barfing。我已经在其他地方读到了我需要对这个方法进行monkeypatch:
module ActiveSupport
class TimeWithZone
# There shouldn't be a colon in the timezone for storing into the db
def to_json
super.gsub(/:(?!.*:)/,'')
end
end
end
然而,虽然这适用于对Time.zone.now的调用,但是它不适用于直接的Time.now,因此记录仍然使用时区中的冒号进行序列化。
我得到了什么:2014-02-28T20:37:13-05:00
我应该得到什么:2014-02-28T20:37:13-0500
答案 0 :(得分:0)
说,在写入数据库时,我无法获得该格式的时间戳。要使用的格式正确为2014-02-28 20:37:13
。
我必须使用以下内容对TimeWithZone和Time类进行monkeypatch:
def as_json(options=nil)
return to_s(:db)
end
这将影响与db同步无关的任何其他to_json调用,因此我的时间戳将不再有时区,但我愿意牺牲它。