Class: Setting
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Setting
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
|
.tabs ⇒ Object
47
48
49
|
# File 'app/models/setting.rb', line 47
def tabs
Setting::Tab.all.sort.map &:label
end
|
Instance Method Details
#zip_title ⇒ Object
4
5
6
|
# File 'app/models/setting.rb', line 4
def zip_title
label
end
|