module SuperAccessors::Store

Public Instance Methods

any_to_b(any) click to toggle source

for boolean convert

# File lib/super_accessors/store.rb, line 12
def any_to_b(any)
  str = any.to_s
  return false if str.blank? || str =~ (/(false|no|0)$/i)
  return true
end
any_to_i(any) click to toggle source

converter

# File lib/super_accessors/store.rb, line 4
def any_to_i(any)
  any.to_i
end
any_to_s(any) click to toggle source

for string converter

# File lib/super_accessors/store.rb, line 8
def any_to_s(any)
  any.to_s
end
store_checkboxes_setup(store_name, attrs) click to toggle source

get the checkboxes true item list & i18n translation

# File lib/super_accessors/store.rb, line 46
def store_checkboxes_setup(store_name, attrs)
  define_method("#{store_name}_keys") do
    list = [];
    attrs.each do |attr|
      if send(attr) == true
        list.push(attr)
      end
    end
    list
  end
  define_method("#{store_name}_options") do
    @i18n_base_scope = [:activerecord, :options, self.class.name.underscore, store_name]
    list = [];
    attrs.each do |attr|
      if send(attr) == true
        list.push(I18n.t("#{attr}", scope: @i18n_base_scope, :default => attr.to_s.humanize))
      end
    end
    list
  end
end
store_define(store_name, option) click to toggle source

This function will instead of store function, now support string, boolean, integer

Example 1: store_define :contact_info, {name: :s, tel: :s, mobile: :s, available: :b}

Example 2 (checkboxes) store_define :role, accessors: {admin: :b, manager: :b, user: :b}, checkboxes: true

you have to setup boolean type of all attribute if you are using checkboxes it provide the function

1. show all option of true item
2. show all option of true item with i18n translation
# File lib/super_accessors/store.rb, line 30
def store_define(store_name, option)
  column_with_datatype = option[:accessors]
  option[:accessors] = option[:accessors].keys
  # setting the activerecord store
  store store_name, option
  # define the virtual attrs
  column_with_datatype.each do |attr, type|
    send("store_key_type_#{type.to_s}", store_name, attr)
  end
  # setting the checkboxs
  if option[:checkboxes]
    store_checkboxes_setup store_name, option[:accessors]
  end
end