Module: Tunable::Model

Extended by:
ActiveSupport::Concern
Defined in:
lib/tunable/model.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#clear_instance_settingsObject



174
175
176
177
# File 'lib/tunable/model.rb', line 174

def clear_instance_settings
  @object_hashed_settings = nil
  @settings = nil # so settings get reloaded from DB
end

#get_main_setting(key) ⇒ Object



162
163
164
# File 'lib/tunable/model.rb', line 162

def get_main_setting(key)
  get_setting(:main, key)
end

#get_setting(context, key) ⇒ Object



153
154
155
156
157
158
159
160
# File 'lib/tunable/model.rb', line 153

def get_setting(context, key)
  val = settings_context(context)[key]

  # if value is nil or no default is set, stop here
  return val if !val.nil? or self.class.default_settings(context)[key.to_sym].nil?

  self.class.default_settings(context)[key.to_sym]
end

#main_settingsObject



170
171
172
# File 'lib/tunable/model.rb', line 170

def main_settings
  settings_context(:main)
end

#queue_setting_for_deletion(context, key) ⇒ Object



194
195
196
197
198
199
# File 'lib/tunable/model.rb', line 194

def queue_setting_for_deletion(context, key)
  if self.class.main_settings_list.include?(key)
    send('changed_attributes')[key.to_sym] = nil
  end
  (deleted_settings[context.to_sym] ||= []) << key.to_sym
end

#queue_setting_for_update(context, key, val) ⇒ Object



187
188
189
190
191
192
# File 'lib/tunable/model.rb', line 187

def queue_setting_for_update(context, key, val)
  if self.class.main_settings_list.include?(key.to_sym)
    send('changed_attributes')[key.to_sym] = val
  end
  (modified_settings[context.to_sym] ||= {})[key.to_sym] = val
end

#setting_off?(context, key) ⇒ Boolean

Returns:

  • (Boolean)


179
180
181
# File 'lib/tunable/model.rb', line 179

def setting_off?(context, key)
  get_setting(context, key) == false
end

#setting_on?(context, key) ⇒ Boolean

Returns:

  • (Boolean)


183
184
185
# File 'lib/tunable/model.rb', line 183

def setting_on?(context, key)
  get_setting(context, key) == true
end

#settings=(hash) ⇒ Object

instance methods below



141
142
143
# File 'lib/tunable/model.rb', line 141

def settings=(hash)
  Tunable::Setting.store_many(hash, self)
end

#settings_context(context) ⇒ Object



166
167
168
# File 'lib/tunable/model.rb', line 166

def settings_context(context)
  settings_hash[context.to_sym] || {}
end

#settings_hashObject



145
146
147
148
149
150
151
# File 'lib/tunable/model.rb', line 145

def settings_hash
  if modified_settings.any?
    puts "Settings have been changed. Hash will be incomplete."
  end

  @object_hashed_settings ||= Hasher.flatten(settings.reload, :context, :key)
end