Module: BitmaskAttributes::ClassMethods

Defined in:
lib/bitmask_attributes.rb

Instance Method Summary collapse

Instance Method Details

#bitmask(attribute, options = {}, &extension) ⇒ Object



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

def bitmask(attribute, options={}, &extension)
  unless options[:as] && options[:as].kind_of?(Array)
    raise ArgumentError, "Must provide an Array :as option"
  end

  if default = options[:default]
    after_initialize do
      send("#{attribute}=", default) unless send("#{attribute}?") || persisted?
    end
  end

  bitmask_definitions[attribute] = Definition.new(attribute, 
                                                  options[:as].to_a, 
                                                  options[:null].nil? || options[:null], 
                                                  options[:zero_value], 
                                                  &extension)

  bitmask_definitions[attribute].install_on(self)
end

#bitmask_definitionsObject



28
29
30
# File 'lib/bitmask_attributes.rb', line 28

def bitmask_definitions
  base_class.base_class_bitmask_definitions
end

#bitmasksObject



32
33
34
# File 'lib/bitmask_attributes.rb', line 32

def bitmasks
  base_class.base_class_bitmasks
end