我正在尝试将变量和实例变量初始化为数组,如下所示:
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。 :/
答案 0 :(得分:9)
您正在覆盖ActiveRecord的initialize
方法。尝试使用super
:
def initialize(*args, &block)
super
@name1 = []
end
答案 1 :(得分:3)
您正在覆盖initialize
的{{1}}方法。在创建类的新实例时,只会调用initilize。 ActiveRecord::Base
创建的所有实例变量都未初始化,ActiveRecord::Base
失败。为了解决这个问题,您需要调用基类的构造函数(使用#inspect
)
super