0
我有以下情況:我的web服務正在接收JSON數據並創建模型(典型的REST方案)。有時我得到一個保存ActiveRecord記錄時奇怪的編碼錯誤
Encoding::CompatibilityError Exception: incompatible character encodings: ASCII-8BIT and UTF-8
當保存記錄,它只能(或)綁定到兩個屬性的記錄時出現錯誤消息。射擊調試器,其中任何兩個屬性設置爲空字符串,並保存作品,像這樣:
model = Model.new(params[:model])
model.save! # Fails with above error message
model = Model.new(params[:model])
model.attribute1 = ""
model.save! # Works
model = Model.new(params[:model])
model.attribute2 = ""
model.save! # Works too!
現在PARAMS從http請求解析,他們怎麼可以依賴於對方呢?
任何人都有相同的情況?
編輯: 我們發現對於保持兼容錯誤的原因:https://github.com/jruby/activerecord-jdbc-adapter/issues/229因爲它看來,JDBC適配器有一些錯誤使用UTF-8編碼,一些已經固定在傳統的紅寶石很長一段時間。
你有任何回調( 'before_save'等),可能會在屬性之間創建耦合?即如果另一個空白,可能會改變一個的東西? –
不,沒有回調,只是其中一個validates_presence_of驗證(所以上面的例子不是100%正確的,但...)。 – Kitto
也許有關? http://stackoverflow.com/questions/4188677/ruby-on-rails-3-incompatible-character-encodings-utf-8-and-ascii-8bit-with-i18 –