File: concern.rb [activesupport-3.0.5 Documentation]

Last Modified
  2017-03-12 17:53:39 +0000
Requires

## Description

A typical module looks like this

    module M
      def self.included(base)
        base.send(:extend, ClassMethods)
        base.send(:include, InstanceMethods)
        scope :foo, :conditions => { :created_at => nil }
      end

      module ClassMethods
        def cm; puts 'I am a class method'; end
      end

      module InstanceMethods
        def im; puts 'I am an instance method'; end
      end
    end

By using `ActiveSupport::Concern` the above module could instead be written as:

    module M
      extend ActiveSupport::Concern

      included do
        scope :foo, :conditions => { :created_at => nil }
      end

      module ClassMethods
        def cm; puts 'I am a class method'; end
      end

      module InstanceMethods
        def im; puts 'I am an instance method'; end
      end
    end