class BitAttrs::Bindings

Constants

ORM_BINDINGS

Public Class Methods

create(klass, attr_name) click to toggle source
# 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