Class: Configurable
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Configurable
- Defined in:
- app/models/configurable.rb
Class Method Summary collapse
- .[](key) ⇒ Object
- .[]=(key, value) ⇒ Object
- .defaults ⇒ Object
- .keys ⇒ Object
- .method_missing(name, *args) ⇒ Object
Class Method Details
.[](key) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'app/models/configurable.rb', line 27 def self.[](key) return self.defaults[key][:default] unless table_exists? value = find_by_name(key).try(:value) || self.defaults[key][:default] case self.defaults[key][:type] when 'boolean' [true, 1, "1", "t", "true"].include?(value) when 'decimal' BigDecimal.new(value.to_s) when 'integer' value.to_i when 'list' return value if value.is_a?(Array) value.split("\n").collect{ |v| v.split(',') } else value end end |
.[]=(key, value) ⇒ Object
18 19 20 21 22 23 24 25 |
# File 'app/models/configurable.rb', line 18 def self.[]=(key, value) exisiting = find_by_name(key) if exisiting exisiting.update_attribute(:value, value) else create(:name => key.to_s, :value => value) end end |
.defaults ⇒ Object
6 7 8 9 10 11 12 |
# File 'app/models/configurable.rb', line 6 def self.defaults HashWithIndifferentAccess.new( YAML.load_file( Rails.root.join('config', 'configurable.yml') ) ) end |
.keys ⇒ Object
14 15 16 |
# File 'app/models/configurable.rb', line 14 def self.keys self.defaults.collect { |k,v| k.to_s }.sort end |
.method_missing(name, *args) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'app/models/configurable.rb', line 46 def self.method_missing(name, *args) name_stripped = name.to_s.sub(/[\?=]$/, '') if self.keys.include?(name_stripped) if name.to_s.end_with?('=') self[name_stripped] = args.first else self[name_stripped] end else super end end |