valid_scope_name?':私有方法"warn"在更新到活动记录 3.1 时调用 nil:NilClass (NoMethodError) 异常 (rails)



事情是有一个rubygem为RoR ActiveRecord添加了一些语法糖来定义过滤器和订单。我们使用meta_where,然后切换到squeel以获得rails 3支持。事情是,一切工作正常与ActiveRecord <= 3.0.10,现在当我试图切换到3.1.0在gem我得到这个错误:

/Users/admin/.rvm/gems/ree-1.8.7-2011.03@filters/gems/activerecord-3.1.0/lib/active_record/named_scope.rb:194:in `valid_scope_name?': private method `warn' called for nil:NilClass (NoMethodError)

整个跟踪如下:

/Users/admin/.rvm/gems/ree-1.8.7-2011.03@filters/gems/activerecord-3.1.0/lib/active_record/named_scope.rb:194:in `valid_scope_name?': private method `warn' called for nil:NilClass (NoMethodError)
    from /Users/admin/.rvm/gems/ree-1.8.7-2011.03@filters/gems/activerecord-3.1.0/lib/active_record/named_scope.rb:175:in `scope'
    from ./test/simplificator_filter/filterable/filterable_test.rb:12
    from /Users/admin/.rvm/gems/ree-1.8.7-2011.03@filters/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:234:in `load'
    from /Users/admin/.rvm/gems/ree-1.8.7-2011.03@filters/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:234:in `load'
    from /Users/admin/.rvm/gems/ree-1.8.7-2011.03@filters/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:223:in `load_dependency'
    from /Users/admin/.rvm/gems/ree-1.8.7-2011.03@filters/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:640:in `new_constants_in'
    from /Users/admin/.rvm/gems/ree-1.8.7-2011.03@filters/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:223:in `load_dependency'
    from /Users/admin/.rvm/gems/ree-1.8.7-2011.03@filters/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:234:in `load'
    from /Users/admin/.rvm/gems/ree-1.8.7-2011.03@global/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5
    from /Users/admin/.rvm/gems/ree-1.8.7-2011.03@global/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5:in `each'
    from /Users/admin/.rvm/gems/ree-1.8.7-2011.03@global/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5

耙流产!

我搜索了类似的错误,但没有发现任何东西(主要是痕迹的馅饼)。有人知道是什么问题吗?

提前谢谢你。欢呼,Neithan

重新加载模型时的行为已经改变。而3.0不麻烦load 'app/models/post.rb' 3.1抛出这个错误。当您喜欢在控制台上交互式地改进模型时,您必须先使用Object.send :remove_const, 'Post'删除模型。

我设法修复了它。

原来问题出在测试套件中。由于这个gem是要为定义过滤器和订单添加一些语法糖,因此它会干扰ActiveRecord。

显然,这样做会在重新计算类或在测试用例中使用相同名称的类时引起问题,在删除一切工作之后。

最新更新