2011-03-10 95 views
0

我正在瀏覽一些Rails代碼,並注意到模型中的一個類包含以下行:serialize:some_property。我想搭建一個包含序列化屬性的新類,但我不知道如何完成它。我應該爲序列化屬性聲明什麼類型,即紅寶石腳本/生成腳手架NewClass serialized_property :(應該到哪裏)?謝謝你的幫助!Ruby on Rails腳手架序列化

回答

4

在繼承自ActiveRecord::Base的模型上的serialize類方法將保存該列/屬性並將其轉換爲YAML,並在加載時執行相反操作。將模型中的基本數組或散列對象保存起來非常棒。

Rails只需要在序列化字段的數據庫/遷移中使用text類型的列。因此,在你遷移,只是確保你已經在你的序列化的字段之後(在這種情況下,settings):

create_table :accounts do |t| 
    t.text :settings 
end 

然後在你的模型應該如添加調用serialize簡單:

​​3210

然後,當你調用Account.new(:settings => { :big_head_mode => true, :awesome => true }).save時,Rails會自動將settings散列序列化到YAML中,並將其保存到數據庫中。

而且要清楚的是,腳手架與此事無關。生成腳手架後,您仍然需要在模型中添加對serialize的呼叫。

+0

謝謝!一切都很好。 – hassaanm 2011-03-10 02:39:27

+0

@coreyward它也適用於哈希數組嗎?例如[{key:value},{key:value},{key:value}] – Ivan 2011-09-04 09:57:22

+0

@Ivan:你總是可以試試它,但是是的,任何干淨地轉換成Yaml的東西都應該順序化。 – coreyward 2011-09-04 18:46:40