Path: | lib/active_support/concern.rb |
Last Update: | Thu Mar 24 16:35:17 +0000 2011 |
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