2011-09-30 75 views
0

我想爲我的類的一個屬性創建一個數組。課程是「課程」,屬性是Course.evals。向一個類添加一個數組(rails)

我嘗試使用「序列化」,ala http://duanesbrain.blogspot.com/2007/04/ruby-on-rails-persist-array-to-database.html,但由於某種原因,它不起作用。這裏是我的相關代碼:

class Course < ActiveRecord::Base 
    serialize :evals 
end 

但後來當我進入控制檯,出現這種情況:

ruby-1.9.2-p290 :043 > blah = Course.find(3) 
=> #<Course id: 3, evals: nil> 
ruby-1.9.2-p290 :045 > blah.update_attribute :evals, "thing" 
=> true 
ruby-1.9.2-p290 :047 > blah.evals << "thing2" 
=> "thingthing2" 
ruby-1.9.2-p290 :048 > blah.save 
=> true 
ruby-1.9.2-p290 :050 > blah.evals 
=> "thingthing2" 

所以blah.evals < <「thing2」只是增加了「thing2」現有「的事「字符串。它不會在任何數組中創建新條目。這是否意味着我的程序沒有在模型中使用我的「序列化」命令?如果是這樣,我該如何解決它?

回答

1

我相信問題是,當您最初爲屬性賦值時,會將其賦值爲字符串。如果你想將它保存爲你需要初始化變量數組的數組...

> blah = Course.find(3) 
> blah.update_attribute :evals, ["thing"] 

作爲一個側面說明,您可以添加一個可選的參數去序列化方法,以確定哪些類的屬性應該有反序列化時...

class Course < ActiveRecord::Base 
    serialize :evals, Array 
end 
+0

工程就像一個魅力。謝謝。 – jyli7