Rails 3.2 Obj.try()失败

时间:2012-05-02 21:31:39

标签: ruby-on-rails ruby-on-rails-3.2

我刚从Rails 3.1.0升级到3.2.3。一旦我清除了我的gem依赖问题,我设法运行测试,我发现了这个:

1.9.2p180 :005 > Rails.version
 => "3.2.3" 
1.9.2p180 :006 > a = 'test'
 => "test" 
1.9.2p180 :007 > a.try(:banana)
NoMethodError: undefined method `banana' for "test":String
    from /Users/jamesthullbery/.rvm/gems/ruby-1.9.2-p180@app_tier/gems/activesupport-3.2.3/lib    /active_support/core_ext/object/try.rb:32:in `try'
    from (irb):7
    from /Users/jamesthullbery/.rvm/gems/ruby-1.9.2-p180@app_tier/gems/railties-3.2.3/lib/rails    /commands/console.rb:47:in `start'
    from /Users/jamesthullbery/.rvm/gems/ruby-1.9.2-p180@app_tier/gems/railties-3.2.3/lib/rails/commands/console.rb:8:in `start'
    from /Users/jamesthullbery/.rvm/gems/ruby-1.9.2-p180@app_tier/gems/railties-3.2.3/lib/rails/commands.rb:41:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'
1.9.2p180 :008 > 

当我在Rails 3.1.0上执行相同的命令时,我没有遇到任何问题:

1.9.2p180 :004 >   Rails.version
 => "3.1.0" 
1.9.2p180 :005 > a = 'test'
 => "test" 
1.9.2p180 :006 > a.try(:banana)
 => nil 
1.9.2p180 :007 > 

有没有人见过这个问题?当然我的环境有问题,而不是Rails框架。准确搜索方法尝试似乎相当困难,所以我还没有在网上找到任何东西。还有其他人看到这个吗?谢谢!

1 个答案:

答案 0 :(得分:3)

Object#try应该处理零接收器。它不应该用于避免NoMethodError例外。

您在3.1.0中看到的行为是一个错误,it was "fixed" 7 months ago(截至撰写本文时)。

相关问题