Module: SimpleFlaggableColumn::ClassMethods

Defined in:
lib/simple_flaggable_column.rb

Instance Method Summary collapse

Instance Method Details

#flag_column(name, symbols_flags) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/simple_flaggable_column.rb', line 16

def flag_column(name, symbols_flags)
  flags_symbols = symbols_flags.invert

  define_singleton_method :"#{name}_flags" do |*symbols|
    if symbols.empty?
      symbols_flags
    else
      SimpleFlaggableColumn.symbols_to_flags(symbols, symbols_flags)
    end
  end

  define_singleton_method :"flags_#{name}" do
    flags_symbols
  end

  define_method "#{name}=" do |symbols|
    if symbols.nil?
      write_attribute name, 0
    elsif symbols.kind_of? Array
      write_attribute name, SimpleFlaggableColumn.symbols_to_flags(symbols, symbols_flags)
    else # numeric, or anything else
      write_attribute name, symbols
    end
  end

  define_method name do
    SimpleFlaggableColumn.flags_to_symbols(read_attribute(name), symbols_flags)
  end
end