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
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'app/models/setting.rb', line 7
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
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# File 'app/models/setting.rb', line 27
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
41
42
43
|
# File 'app/models/setting.rb', line 41
def define(label, options = {})
Setting::Meta[label.to_sym] = Setting::Meta.new label, options
end
|
.tabs ⇒ Object
45
46
47
|
# File 'app/models/setting.rb', line 45
def tabs
Setting::Tab.all.sort.map &:label
end
|
Instance Method Details
#zip_title ⇒ Object
2
3
4
|
# File 'app/models/setting.rb', line 2
def zip_title
label
end
|