lac*_*i37 -1 ruby ruby-on-rails
我undefined method '[]' for nil:NilClass在标记的行处得到错误.记录器显示hash不是零.我似乎并没有在该行的其他任何地方调用此方法.我在这里错过了什么?
def initialize(hash)
Rails.logger.debug "Attr init hash: #{hash.inspect}, nil?: #{hash.nil?}"
self.name = hash[:name] #error here
self.type = hash[:type]
self.default_value = hash[:default_value]
self.original_name = if hash[:original_name]
hash[:original_name]
else
name
end
end
Run Code Online (Sandbox Code Playgroud)
这是记录器的输出:
Attr init asdasd: {:name=>"join_id.alma", :type=>"", :default_value=>"", :original_name=>nil}, nil?: false
Run Code Online (Sandbox Code Playgroud)
您覆盖initialize,因此您的ActiveRecord对象未正确初始化.引发错误是因为self.name内部尝试更新实例的attributes哈希并失败.
当您覆盖该initialize方法时,首先调用super以运行默认initialize方法是有意义的:
def initialize(hash)
super(hash.slice(:name, :type, :default_value))
self.original_name = hash[original_name] || name
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
48 次 |
| 最近记录: |