Module: CanTango::Rules::Adaptor

Included in:
UserRelation
Defined in:
lib/cantango/rules/adaptor.rb,
lib/cantango/rules/adaptor/generic.rb,
lib/cantango/rules/adaptor/mongoid.rb,
lib/cantango/rules/adaptor/active_record.rb

Defined Under Namespace

Modules: ActiveRecord, Generic, Mongoid

Instance Method Summary collapse

Instance Method Details

#adaptor(orm) ⇒ Object



19
20
21
# File 'lib/cantango/rules/adaptor.rb', line 19

def adaptor orm
  "CanTango::Rules::Adaptor::#{orm.to_s.camelize}".constantize
end

#orm_mapObject



23
24
25
26
27
28
# File 'lib/cantango/rules/adaptor.rb', line 23

def orm_map
  {
    :active_record => "ActiveRecord::Base",
    :mongoid => "Mongoid::Document"
  }
end

#use_adaptor!(base, object) ⇒ Object

include adaptor depending on which ORM the object inherits from or includes



8
9
10
11
12
13
14
15
16
17
# File 'lib/cantango/rules/adaptor.rb', line 8

def use_adaptor! base, object
  orm_map.each_pair do |orm, const|
    begin
      adaptor_class = const.constantize
      base.class.send(:include, adaptor(orm)) if object.kind_of?(adaptor_class)
    rescue 
      next
    end
  end
end