module SmartSettings::Persistence

Public Instance Methods

settings() click to toggle source
# File lib/smart_settings/persistence.rb, line 32
def settings
  return unless settings_table_exists?

  valid = self.attribute_names.reject { |i| i == 'var' }
  Setting.where(settable_type: self.class.name, settable_id: id, var: valid)
end

Private Instance Methods

cast_setting_value(var, value) click to toggle source
# File lib/smart_settings/persistence.rb, line 41
def cast_setting_value(var, value)
  self.class.attribute_types[var].cast(value)
end
create_or_update_setting(var, value) click to toggle source
# File lib/smart_settings/persistence.rb, line 54
def create_or_update_setting(var, value)
  if settings.where(var: var).exists?
    update_setting(var, value)
  else
    create_setting(var, value)
  end
end
create_setting(var, value) click to toggle source
# File lib/smart_settings/persistence.rb, line 45
def create_setting(var, value)
  parameters = { var: var, value: cast_setting_value(var, value) }
  Setting.create(parameters.merge(settable_type: self.class.name, settable_id: id))
end
settings_table_exists?() click to toggle source
# File lib/smart_settings/persistence.rb, line 62
def settings_table_exists?
  ActiveRecord::Base.connection.table_exists? Setting.table_name
end
update_setting(var, value) click to toggle source
# File lib/smart_settings/persistence.rb, line 50
def update_setting(var, value)
  settings.where(var: var).update(value: cast_setting_value(var, value))
end