【问题标题】:Adding an array to a Class (rails)将数组添加到类(rails)
【发布时间】:2011-11-28 16:39:23
【问题描述】:

我想让我的班级的一个属性成为一个数组。类是“Course”,属性是 Course.evals。

我尝试使用“序列化”,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

【问题讨论】:

    标签: ruby-on-rails arrays serialization


    【解决方案1】:

    我认为问题在于,当您最初为属性分配值时,它被分配为字符串。如果要将其存储为数组,则需要将变量初始化为数组...

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

    作为旁注,您可以在 serialize 方法中添加一个可选参数,以确定反序列化时属性应该具有哪个类...

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-16
      • 1970-01-01
      • 1970-01-01
      • 2012-11-30
      • 1970-01-01
      • 1970-01-01
      • 2012-06-28
      相关资源
      最近更新 更多