module CustomRailsSettingsCached

Constants

VERSION

Public Instance Methods

default_value(name) click to toggle source
# File lib/custom_rails_settings_cached.rb, line 54
def default_value(name)
  default_setting_key = "#{self.class.name.to_s.underscore}.#{name.to_s.underscore}"
  Setting[default_setting_key]
end
get_settings(name) click to toggle source
# File lib/custom_rails_settings_cached.rb, line 12
def get_settings(name)
  if has_associations_with_rails_settings
    st = settings.find_by var: setting_key(name)
    st ? st.value : default_value(name)
  else
    Setting[setting_key(name)]
  end
end
has_associations_with_rails_settings() click to toggle source
# File lib/custom_rails_settings_cached.rb, line 48
def has_associations_with_rails_settings
  return @has_rails_settings unless @has_rails_settings.nil?
  associations = self.class.reflect_on_all_associations(:has_many)
  @has_rails_settings = associations.any? { |a| a.name == :settings }
end
init_setting(name, value) click to toggle source
# File lib/custom_rails_settings_cached.rb, line 21
def init_setting(name, value)
  if has_associations_with_rails_settings
    st = settings.find_or_initialize_by(var: setting_key(name))
    st.value = value
    st.save
  else
    Setting[setting_key(name)] = value
  end
end
pretty_key(key_name) click to toggle source
# File lib/custom_rails_settings_cached.rb, line 44
def pretty_key(key_name)
  key_name.split('.').last
end
setting_key(name) click to toggle source
# File lib/custom_rails_settings_cached.rb, line 31
def setting_key(name)
  return name.to_s.underscore if has_associations_with_rails_settings
  "#{self.class.name}.#{self.id}.#{name}".underscore
end
settings_as_object() click to toggle source
# File lib/custom_rails_settings_cached.rb, line 36
def settings_as_object
  data = { partner_id: self.id }
  settings.each do |st|
    data[pretty_key(st.var)] = st.value
  end
  OpenStruct.new data
end