module SimpleFlaggableColumn::ClassMethods
Public Instance Methods
flag_column(name, symbols_flags, options = {})
click to toggle source
# File lib/simple_flaggable_column.rb, line 21 def flag_column(name, symbols_flags, options = {}) options = { throw_on_missing: true }.merge(options) 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, options[:throw_on_missing] ) 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, options[:throw_on_missing] ) 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