Class: Setting

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/setting.rb

Defined Under Namespace

Classes: InvalidError, Meta, Section, Tab

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.[](label) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'app/models/setting.rb', line 9

def [](label)
  raise "Invalid label" unless label.present?
  meta = Setting::Meta[label.to_sym]
  raise "Missing setting definition for '#{label}'" unless meta

  begin
    record = where(:label => label.to_s).first
  rescue => e
    raise unless e.to_s =~ /Could not find table/
  end

  if record
    meta.convert record.value
  elsif meta.type == :array || meta.type == :hash
    meta.default.dup
  else
    meta.default
  end
end

.[]=(label, value) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'app/models/setting.rb', line 29

def []=(label, value)
  raise "Invalid label" unless label.present?
  meta = Setting::Meta[label.to_sym]
  raise "Missing setting definition for '#{label}'" unless meta
  meta.validation.call value if meta.validation
  old_value = self[label]
  record = where(:label => label.to_s).first
  record = Setting.new :label => label.to_s unless record
  record.value = meta.convert_to_save value
  record.save!
  meta.onchange.call if meta.onchange && old_value != value
  value
end

.define(label, options = {}) ⇒ Object



43
44
45
# File 'app/models/setting.rb', line 43

def define(label, options = {})
  Setting::Meta[label.to_sym] = Setting::Meta.new label, options
end

.tabsObject



47
48
49
# File 'app/models/setting.rb', line 47

def tabs
  Setting::Tab.all.sort.map &:label
end

Instance Method Details

#zip_titleObject



4
5
6
# File 'app/models/setting.rb', line 4

def zip_title
  label
end