将实例变量初始化为数组 - Ruby

时间:2011-11-09 23:01:45

标签: ruby ruby-on-rails-3.1 initialization instance-variables

我正在尝试将变量和实例变量初始化为数组,如下所示:

  class Arch < ActiveRecord::Base  
  attr_accessor :name1

    def initialize
      @name1 = []
    end

    def add_name1(t)
      @name1 << t
    end

  end

当我在控制台会话中尝试Arch.new时,我得到(Object不支持#inspect)。这是怎么回事?如何创建实例数组变量?我试着跟this一样:

class Arch < ActiveRecord::Base
attr_accessor :name1

  def after_initialize
    @name1 = []
  end

  def add_name1(t)
    @name1 << t
  end

end

我的@ name1仍然是NilClass。 :/

2 个答案:

答案 0 :(得分:9)

您正在覆盖ActiveRecord的initialize方法。尝试使用super

def initialize(*args, &block)
   super 
   @name1 = []
end

答案 1 :(得分:3)

您正在覆盖initialize的{​​{1}}方法。在创建类的新实例时,只会调用initilize。 ActiveRecord::Base创建的所有实例变量都未初始化,ActiveRecord::Base失败。为了解决这个问题,您需要调用基类的构造函数(使用#inspect

super