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