how to use ‘constantize’ in custom controller module

I have a module like this:

module Controller   module LocaleModels     def self.included(base)       base.send :include, InstanceMethods     end

    module InstanceMethods       def locale_Lexeme; constantize_model('Lexeme') end       def locale_Synthetic; constantize_model('Synthetic') end       def locale_Property; constantize_model('Property') end

      private       def constantize_model(common_part)         eval(I18n.locale.capitalize + '::' + common_part).constantize       end     end   end end

But I kept getting

NoMethodError (undefined method `constantize' for #<Class:0x2483b0c>)

I guess I cannot use 'constantize' in a custom module.

But can you please offer some workaround?

Hello--

I have a module like this:

module Controller module LocaleModels    def self.included(base)      base.send :include, InstanceMethods    end

   module InstanceMethods      def locale_Lexeme; constantize_model('Lexeme') end      def locale_Synthetic; constantize_model('Synthetic') end      def locale_Property; constantize_model('Property') end

     private      def constantize_model(common_part)        eval(I18n.locale.capitalize + '::' + common_part).constantize      end    end end end

But I kept getting

NoMethodError (undefined method `constantize' for #<Class:0x2483b0c>)

I guess I cannot use 'constantize' in a custom module.

But can you please offer some workaround?

This may not be the problem, but why are you using eval? ActiveSupport::CoreExtensions::String::Inflections defines constantize as a method on String. It would seem to me that this would work:

(I18n.locale.capitalize + '::' + common_part).constantize

However, if you are looking for a class, investigate classify instead.

Maybe there's something I'm missing here that requires use of eval? What happens in script/console if you type the expression in?

Thank you for your reply.

Actually, that eval is a typo. But I found by removing that 'eval' did resolved my problem here.

Thank you very much.