Class: SettingAccessors::Accessor
- Inherits:
-
Object
- Object
- SettingAccessors::Accessor
- Defined in:
- lib/setting_accessors/accessor.rb
Overview
Helper class to make accessing record specific settings easier
Instance Method Summary collapse
-
#[](key) ⇒ Object
Gets a setting’s value.
-
#[]=(key, val) ⇒ Object
Writes a setting’s value.
-
#get_or_default(key) ⇒ Object
Tries to find a setting for this record.
-
#get_or_global(key) ⇒ Object
Tries to find a setting for this record first.
-
#get_or_value(key, value) ⇒ Object
Tries to find a setting for this record first, if none is found, it will return the given value instead.
- #get_with_fallback(key, fallback = nil) ⇒ Object
- #has_key?(key) ⇒ Boolean
-
#initialize(record) ⇒ Accessor
constructor
A new instance of Accessor.
- #value_before_type_cast(key) ⇒ Object
- #value_changed?(key) ⇒ Boolean
-
#value_type(key) ⇒ String
The setting’s value type in the @record‘s context.
-
#value_was(key, fallback = nil) ⇒ Object
—————————————————————- ActiveRecord Helper Methods Emulation —————————————————————-.
Constructor Details
#initialize(record) ⇒ Accessor
Returns a new instance of Accessor.
7 8 9 10 |
# File 'lib/setting_accessors/accessor.rb', line 7 def initialize(record) @record = record @temp_settings = {} end |
Instance Method Details
#[](key) ⇒ Object
Gets a setting’s value
15 16 17 |
# File 'lib/setting_accessors/accessor.rb', line 15 def [](key) has_key?(key) ? @temp_settings[key.to_sym] : SettingAccessors.setting_class.get(key, @record) end |
#[]=(key, val) ⇒ Object
Writes a setting’s value
26 27 28 29 |
# File 'lib/setting_accessors/accessor.rb', line 26 def []=(key, val) set_value_before_type_cast(key, val) @temp_settings[key.to_sym] = SettingAccessors::Internal.converter(value_type(key)).convert(val) end |
#get_or_default(key) ⇒ Object
Tries to find a setting for this record. If none is found, will return the default setting value specified in the setting config file.
36 37 38 |
# File 'lib/setting_accessors/accessor.rb', line 36 def get_or_default(key) self[key] || SettingAccessors.setting_class.get_or_default(key, @record) end |
#get_or_global(key) ⇒ Object
Tries to find a setting for this record first. If none is found, tries to find a global setting with the same name
44 45 46 |
# File 'lib/setting_accessors/accessor.rb', line 44 def get_or_global(key) self[key] || SettingAccessors.setting_class.get(key) end |
#get_or_value(key, value) ⇒ Object
Tries to find a setting for this record first, if none is found, it will return the given value instead.
52 53 54 |
# File 'lib/setting_accessors/accessor.rb', line 52 def get_or_value(key, value) self.has_key?(key) ? self[key] : value end |
#get_with_fallback(key, fallback = nil) ⇒ Object
56 57 58 59 60 61 62 63 64 |
# File 'lib/setting_accessors/accessor.rb', line 56 def get_with_fallback(key, fallback = nil) return self[key] if fallback.nil? case fallback.to_s when 'default' then get_or_default(key) when 'global' then get_or_global(key) else get_or_value(key, fallback) end end |
#has_key?(key) ⇒ Boolean
19 20 21 |
# File 'lib/setting_accessors/accessor.rb', line 19 def has_key?(key) @temp_settings.has_key?(key.to_sym) end |
#value_before_type_cast(key) ⇒ Object
91 92 93 |
# File 'lib/setting_accessors/accessor.rb', line 91 def value_before_type_cast(key) SettingAccessors::Internal.lookup_nested_hash(@values_before_type_casts, key.to_s) || self[key] end |
#value_changed?(key) ⇒ Boolean
87 88 89 |
# File 'lib/setting_accessors/accessor.rb', line 87 def value_changed?(key) self[key] != value_was(key) end |
#value_type(key) ⇒ String
Returns the setting’s value type in the @record‘s context.
69 70 71 |
# File 'lib/setting_accessors/accessor.rb', line 69 def value_type(key) SettingAccessors::Internal.setting_value_type(key, @record) end |
#value_was(key, fallback = nil) ⇒ Object
ActiveRecord Helper Methods Emulation
77 78 79 80 81 82 83 84 85 |
# File 'lib/setting_accessors/accessor.rb', line 77 def value_was(key, fallback = nil) return SettingAccessors.setting_class.get(key, @record) if fallback.nil? case fallback.to_s when 'default' then SettingAccessors.setting_class.get_or_default(key, @record) when 'global' then SettingAccessors.setting_class.get(key) else fallback end end |