還有另一個導軌serialization的問題。我讀過不少,這些並不能找到答案,我的問題,所以在這裏它是:使用默認值和新對象的導軌序列化
我有典型的:
class User < ActiveRecord::Base
serialize :prefs, Hash
在我的遷移(感謝this問題+答案):
add_column :user, :prefs, :text, default: { foo: 'bar' }.to_yaml
現在,當我加載現有用戶:首選項被反序列:
User.first.prefs[:foo] # returns 'bar'
User.first.prefs.class # returns Hash
User.first.prefs # returns {:foo => "bar"}
所以它是完美的!但是,當我創建一個新的:
User.new.prefs[:foor] # TypeError: can't convert Symbol into Integer
User.new.prefs.class # returns String
User.new.prefs # returns "---\n:foo: bar\n"
是否有可能得到這個工作沒有任何這些?
after_initialize :method
- 像default_value_for
- 寶石覆蓋
initialize
我真的想要得到它,只有數據庫的默認工作。難道我做錯了什麼?
什麼數據庫適配器您使用? – mdominiak 2012-07-17 23:07:51
我使用[this](https://github.com/dazuma/activerecord-postgis-adapter)one ..嗯..我會檢查它是否發生沒有它。 – 2012-07-18 01:23:50
我工作正常與pg(0.14.0)和activerecord-postgis適配器(0.4.3)適配器對我來說。但是,它不適用於sqlite3(1.3.6)適配器。這就是爲什麼我要求使用adapater的原因,因爲它可能需要對它做些什麼或它的版本。在sqlite3的情況下,如果列缺省值包含換行符(\ n),我認爲在解析列缺省時存在缺陷。我正在檢查最新的紅寶石(1.9.2-p194)+導軌(3.2.6)堆棧。 – mdominiak 2012-07-18 07:31:35