Class: Setting

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

Class Method Summary collapse

Class Method Details

.[](name) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'app/models/setting.rb', line 22

def [](name)
  if has_key? name
    return read(name)
  end

  if (setting = find_by(name: name))
    value = setting.value
  else
    value = yield # default value passed as block
  end

  write(name, value)

  value
end

.[]=(name, value) ⇒ Object



12
13
14
15
16
17
18
19
20
# File 'app/models/setting.rb', line 12

def []=(name, value)
  write(name, value)

  find_or_create_by!(name: name) do |setting|
    setting.value = value
  end

  value
end

.apply_all(settings = {}) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
# File 'app/models/setting.rb', line 46

def apply_all(settings = {})
  settings.each do |name, value|
    find_or_create_by!(name: name) do |setting|
      if value.is_a? Array
        setting.value, setting.unit = value
      else
        setting.value = value
      end
    end
  end
end

.expire(name) ⇒ Object



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

def expire(name)
  cache.delete cache_key(name)
end

.has_key?(name) ⇒ Boolean

Returns:

  • (Boolean)


38
39
40
# File 'app/models/setting.rb', line 38

def has_key?(name)
  cache.exist? cache_key(name)
end

.remove_all(*settings) ⇒ Object



58
59
60
61
62
63
# File 'app/models/setting.rb', line 58

def remove_all(*settings)
  settings.each do |name|
    find_by(name: name).try(:destroy!)
    expire(name)
  end
end