在测试我的Rails应用时遇到了以下问题。
使用EventMachine发出异步HTTP请求时,由于某种原因,我无法在回调中使用ActiveRecord对象。 每当我尝试访问该对象时,我都会遇到以下异常:
/home/user/.rvm/gems/ruby-1.8.7-p371/gems/activerecord-2.3.18/lib/active_record/attribute_methods.rb:144:in `create_time_zone_conversion_attribute?': You have a nil object when you didn't expect it! (NoMethodError)
You might have expected an instance of Array.
The error occurred while evaluating nil.include?
from /home/user/.rvm/gems/ruby-1.8.7-p371/gems/activerecord-2.3.18/lib/active_record/attribute_methods.rb:75:in `define_attribute_methods'
from /home/user/.rvm/gems/ruby-1.8.7-p371/gems/activerecord-2.3.18/lib/active_record/attribute_methods.rb:71:in `each'
from /home/user/.rvm/gems/ruby-1.8.7-p371/gems/activerecord-2.3.18/lib/active_record/attribute_methods.rb:71:in `define_attribute_methods'
from /home/user/.rvm/gems/ruby-1.8.7-p371/gems/activerecord-2.3.18/lib/active_record/attribute_methods.rb:257:in `method_missing'
如果我从回调中删除ActiveRecord对象,它可以正常工作。不幸的是,我真的需要它们才能访问,因此删除不是一种选择。
如果我访问该对象进行读写,则无关紧要。
我写的代码看起来像这样:
http = EM::HttpRequest.new(url).get(:query => query)
http.callback do
....
object.status = 'delivered'
object.save!
....
end
至于环境,我有以下设置:
有谁知道可能导致此错误的原因是什么?如何解决这个问题?
提前致谢!
答案 0 :(得分:0)
似乎我只需要修改我的开发配置文件。 设置config.cache_classes = true修复了问题。