最近,我们发现当运行某些报告(项目状态或需求覆盖率)时,报告会失败,弹出窗口显示:
零的未定义方法‘[]:NilClass
查看httpd访问日志(),我看到以下内容:
“获取/report/requirement_coverage/?sort_by=id&test_object_ids=12 HTTP/1.1”403 38 "http://tarantula.xxxxx.xxxx/“
在production.log文件中,我们还可以看到以下内容:
在/opt/tarantula/rails/app/models/report/requirement_coverage.rb:115:in‘/opt/tarantula/rails/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.18/lib/active_record/associations/collection_proxy.rb:91:in each' /opt/tarantula/rails/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.18/lib/active_record/associations/collection_proxy.rb:91:inmethod_missing’/opt/tarantula/rails/app/models/report/requirement_coverage.rb:77:in D8<中未定义的方法[]' for nil:NilClass /opt/tarantula/rails/lib/priority_extensions.rb:9:inpriority_name‘[]' for nil:NilClass /opt/tarantula/rails/lib/priority_extensions.rb:9:incase_info' /opt/tarantula/rails/app/models/report/requirement_coverage.rb:77:in块(2级)/opt/tarantula/rails/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.18/lib/active_record/relation/delegation.rb:6:in /code>eacheach' /opt/tarantula/rails/app/models/report/requirement_coverage.rb:66:indo_query
以下是更多的后续行动:
/opt/tarantula/rails/vendor/bundle/ruby/1.9.1/gems/passenger-3.0.19/helper-scripts/passenger-spawn-server:99:in‘’在113381.4ms内完成了403个故宫(视图: 0.2ms = ActiveRecord: 7849.2ms)
注意:这不是我的代码,而是来自Testia Tarantula模块的代码。
=begin rdoc
Include this in a model which is to be prioritized.
=end
module PriorityExtensions
def priority_name
Project::Priorities.detect{|p| p[:value] == self.priority}[:name]
end
def priority=(p)
if p.is_a? String
p_val = Project::Priorities.detect{|pp| pp[:name] == p.downcase}
if p_val
self[:priority] = p_val[:value]
else
raise "Invalid priority '#{p}' for #{self.class} (id #{self.id})"
end
else
self[:priority] = p
end
end
def self.included(model)
model.validates_inclusion_of :priority, :in => Project::Priorities.map{|p| p[:value]}
end
end发布于 2016-08-24 14:54:02
发现该问题时,表“case”中的一个列“优先级”以某种方式更改为无效的NULL。将值更改为'0‘(正常)解决了问题。
https://stackoverflow.com/questions/39105331
复制相似问题