19259


Rails3.2からRails4にバージョンアップしました。独自に作成したmy_resource/base.rbの中でdemodulizeメソッドを呼び出しているですがバージョンアップにより使えなくなりました。

[code]

    2015/11/20 18:02:16 [INFO] ::   Rendered pogepoge/_select_hoge.html.erb (317.7ms)
    
    2015/11/20 18:02:16 [ERROR] :: ref:[4c1-3992] type:[APPLICATION_ERROR] アプリケーションエラー。, undefined method `demodulize' for #
    
    2015/11/20 18:02:16 [INFO] ::
    
        /poge/hoge/workspace/version/app/pogeapp/lib/my_resource/base.rb:291:in `demodulized_underscore_name'
    
        /poge/hoge/workspace/version/app/pogeapp/app/views/pogepoge/_select_hoge.html.erb:55:in `block (5 levels) in _pogepoge__select_hoge_html_erb___2093292265898603831_70005643233100'
    
        /poge/hoge/workspace/version/app/pogeapp/app/helpers/application_helper.rb:1826:in `show_table_if_exists'
    
        /poge/hoge/workspace/version/app/pogeapp/app/views/pogepoge/_select_hoge.html.erb:54:in `block (4 levels) in _pogepoge__select_hoge_html_erb___2093292265898603831_70005643233100'
    
        /poge/hoge/workspace/version/app/pogeapp/app/helpers/application_helper.rb:1638:in `block (3 levels) in widget_box_frame'
    
        /poge/hoge/.rbenv/versions/2.2.3/gemsets/4.0/gems/actionpack-4.0.13/lib/action_view/helpers/capture_helper.rb:38:in `block in capture'
    
        /poge/hoge/.rbenv/versions/2.2.3/gemsets/4.0/gems/actionpack-4.0.13/lib/action_view/helpers/capture_helper.rb:200:in `with_output_buffer'
    
        /poge/hoge/.rbenv/versions/2.2.3/gemsets/4.0/gems/actionpack-4.0.13/lib/action_view/helpers/capture_helper.rb:38:in `capture'
    
        /poge/hoge/.rbenv/versions/2.2.3/gemsets/4.0/gems/actionpack-4.0.13/lib/action_view/helpers/tag_helper.rb:94:in `content_tag'
    
        /poge/hoge/workspace/version/app/pogeapp/app/helpers/application_helper.rb:1637:in `block (2 levels) in widget_box_frame'
    
        /poge/hoge/.rbenv/versions/2.2.3/gemsets/4.0/gems/actionpack-4.0.13/lib/action_view/helpers/capture_helper.rb:38:in `block in capture'
    
        /poge/hoge/.rbenv/versions/2.2.3/gemsets/4.0/gems/actionpack-4.0.13/lib/action_view/helpers/capture_helper.rb:200:in `with_output_buffer'
    
        /poge/hoge/.rbenv/versions/2.2.3/gemsets/4.0/gems/actionpack-4.0.13/lib/action_view/helpers/capture_helper.rb:38:in `capture'
    
        /poge/hoge/.rbenv/versions/2.2.3/gemsets/4.0/gems/actionpack-4.0.13/lib/action_view/helpers/tag_helper.rb:94:in `content_tag'
    
        /poge/hoge/workspace/version/app/pogeapp/app/helpers/application_helper.rb:1636:in `block in widget_box_frame'
    
        /poge/hoge/.rbenv/versions/2.2.3/gemsets/4.0/gems/actionpack-4.0.13/lib/action_view/helpers/capture_helper.rb:38:in `block in capture'
    
        /poge/hoge/.rbenv/versions/2.2.3/gemsets/4.0/gems/actionpack-4.0.13/lib/action_view/helpers/capture_helper.rb:200:in `with_output_buffer'
    
        /poge/hoge/.rbenv/versions/2.2.3/gemsets/4.0/gems/actionpack-4.0.13/lib/action_view/helpers/capture_helper.rb:38:in `capture'
    
        /poge/hoge/.rbenv/versions/2.2.3/gemsets/4.0/gems/actionpack-4.0.13/lib/action_view/helpers/tag_helper.rb:94:in `content_tag'
    
[/code]

実コードはこんな感じです。  
クラス名を取ってきて小文字にしています。demodulizeメソッドが無いと出ています。

[code]

    def demodulized_underscore_name
        my_class.demodulize.underscore
    end
    
[/code]

my_classのクラス名をデバックで見てみたらActiveModel::Nameになっていました。  
baseやinitializerにrequire 'active_support/inflector/methods'入れてみましたが  
動きませんでした。解決方法をご存知でしたら教えていただきたく。


CC BY-SA 3.0
2015-11-24T13:00:00.317
19253
2015-11-24T16:05:58.617
10851
question
ruby-on-rails ruby rails-activerecord rspec
Rails4に上げるとdemodulizedメソッドが使えなくなった


書かれている情報から 4.x で動かない理由までは分かりませんが、`to_s` で一度文字列にすれば解決するはずです。

[code]

    def demodulized_underscore_name
        my_class.to_s.demodulize.underscore
    end
    
[/code]


CC BY-SA 3.0
2015-11-24T16:05:58.617
19259
2015-11-24T16:05:58.617
76
19253
answer