![](/img/trans.png)
[英]Affected rows for ActiveRecord::Base.connection.execute
[英]Rails 4 ActiveRecord::Base.connection.execute to_json encodes DateTime incorrectly
最終的結果是讓我的模型讀取所有以“ manager_”開頭的表,並將記錄序列化為JSON以傳輸到從屬應用程序,該應用程序將JSON字符串作為同步過程寫回到其數據庫中。
即,DB> JSON>(通過Web傳輸)> JSON> DB
我現在遇到的問題是,DateTime對象在最后的時區中用冒號進行了編碼,而在嘗試將屬性寫入db時,mysql正在倒轉。 我在SO上的其他地方已經讀到了,因此我需要對方法進行修補:
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
請注意,在寫入數據庫時,我無法使用該格式的時間戳。 正確使用的格式是2014-02-28 20:37:13
。
我必須使用以下內容同時對TimeWithZone和Time類進行修補:
def as_json(options=nil)
return to_s(:db)
end
這將影響與數據庫同步無關的任何其他to_json調用,因此我的時間戳將不再具有時區,但我願意犧牲這個時區。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.