大場寧子のホームページ - モジュール下のモデルクラスで関連の拡張ができない Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

extension_module_nameに::が含まれてしまうために例外が発生する(2.0.2で確認。ソースをみると2.1でも起きそう)。とりあえず、initializer/active_record/association_ext.rb を作って以下を記述すれば動作する。

module ActiveRecord
   module Associations
     module ClassMethods
       def create_extension_modules(association_id, block_extension, extensions)
         extension_module_name = "#{self.to_s.gsub(/::/, '')}#{association_id.to_s.camelize}AssociationExtension"

         silence_warnings do
           Object.const_set(extension_module_name, Module.new(&block_extension))
         end

         Array(extensions).push(extension_module_name.constantize)
       end
     end
   end
end