Class: BitAttrs::Bindings

Inherits:
Object
  • Object
show all
Defined in:
lib/bit_attrs/bindings.rb

Constant Summary collapse

ORM_BINDINGS =
[ActiveRecordBinding, DataMapperBinding]

Class Method Summary collapse

Class Method Details

.create(klass, attr_name) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/bit_attrs/bindings.rb', line 9

def self.create(klass, attr_name)
  ORM_BINDINGS.each do |orm_binding|
    next unless orm_binding.should_be_created?(klass)

    klass.define_singleton_method "with_#{attr_name}" do |*flags_list|
      bitset = self.new.send(attr_name)
      flags_list.each { |flag| bitset[flag] = true }

      orm_binding.with(klass, attr_name, bitset)
    end

    klass.define_singleton_method "without_#{attr_name}" do |*flags_list|
      bitset = self.new.send(attr_name)
      flags_list.each { |flag| bitset[flag] = true }

      orm_binding.without(klass, attr_name, bitset)
    end
  end
end