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