Module: SettingAccessors::SettingScaffold::ClassMethods
- Defined in:
- lib/setting_accessors/setting_scaffold.rb
Instance Method Summary collapse
-
#[](name, assignable = nil) ⇒ Object, NilClass
(also: #get)
Searches for a setting in the database and returns its value.
-
#[]=(name, *args) ⇒ Object
Shortcut for #create_or_update.
-
#create_default_setting(name, assignable = nil) ⇒ Object
Creates a new setting for the given name and assignable, using the setting’s default value stored in the config file.
-
#create_or_update(name, value, assignable = nil, return_value = false) ⇒ Object, Setting
Creates or updates the setting with the given name.
-
#get_default_value(name, assignable = nil) ⇒ Object
The default value for the given setting.
-
#get_or_default(name, assignable = nil) ⇒ Object
Tries to look the setting up using #get, if no existing setting is found, the setting’s default value is returned.
-
#setting_record(name, assignable = nil) ⇒ Setting, NilClass
Looks up a setting record for the given name and assignable Unlike the other methods here, this one actually returns a Setting object instead of its value.
-
#validation_errors(name, value, assignable = nil) ⇒ Array<String>
Tests, if the given value would be valid for the given setting name.
Instance Method Details
#[](name, assignable = nil) ⇒ Object, NilClass Also known as: get
Searches for a setting in the database and returns its value
34 35 36 |
# File 'lib/setting_accessors/setting_scaffold.rb', line 34 def [](name, assignable = nil) self.setting_record(name, assignable).try(:value) end |
#[]=(name, *args) ⇒ Object
Shortcut for #create_or_update
The second argument is an optional assignable
105 106 107 108 |
# File 'lib/setting_accessors/setting_scaffold.rb', line 105 def []=(name, *args) assignable = args.size > 1 ? args.first : nil self.create_or_update(name, args.last, assignable, true) end |
#create_default_setting(name, assignable = nil) ⇒ Object
Creates a new setting for the given name and assignable, using the setting’s default value stored in the config file
If the setting already exists, its value will not be overridden
128 129 130 |
# File 'lib/setting_accessors/setting_scaffold.rb', line 128 def create_default_setting(name, assignable = nil) self.create_or_update(name, self.get_or_default(name, assignable), assignable) end |
#create_or_update(name, value, assignable = nil, return_value = false) ⇒ Object, Setting
Creates or updates the setting with the given name
@toto: Bless the rains down in Africa!
83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/setting_accessors/setting_scaffold.rb', line 83 def create_or_update(name, value, assignable = nil, return_value = false) setting = self.setting_record(name, assignable) setting ||= self.new(:name => name, :assignable => assignable) setting.set_value(value) if return_value setting.save! setting.value else setting.save setting end end |
#get_default_value(name, assignable = nil) ⇒ Object
Returns the default value for the given setting.
135 136 137 |
# File 'lib/setting_accessors/setting_scaffold.rb', line 135 def get_default_value(name, assignable = nil) self.new(:name => name, :assignable => assignable).default_value end |
#get_or_default(name, assignable = nil) ⇒ Object
Tries to look the setting up using #get, if no existing setting is found, the setting’s default value is returned.
44 45 46 47 48 49 50 |
# File 'lib/setting_accessors/setting_scaffold.rb', line 44 def get_or_default(name, assignable = nil) if (val = self[name, assignable]).nil? self.new(:name => name, :assignable => assignable).default_value else val end end |
#setting_record(name, assignable = nil) ⇒ Setting, NilClass
Looks up a setting record for the given name and assignable Unlike the other methods here, this one actually returns a Setting object instead of its value.
146 147 148 |
# File 'lib/setting_accessors/setting_scaffold.rb', line 146 def setting_record(name, assignable = nil) self.find_by(:name => name.to_s, :assignable => assignable) end |
#validation_errors(name, value, assignable = nil) ⇒ Array<String>
Tests, if the given value would be valid for the given setting name. This is done in this class method due to the process of setting creation through assigned records which does not allow going the “normal” way of testing whether a setting was saved correctly or not.
159 160 161 162 163 |
# File 'lib/setting_accessors/setting_scaffold.rb', line 159 def validation_errors(name, value, assignable = nil) s = self.new(:name => name, :value => value, :assignable => assignable) s.valid? s.errors.get(:value) || [] end |