Class: ActiveadminSettingsCached::Model

Inherits:
Object
  • Object
show all
Includes:
ActiveModel::Model
Defined in:
lib/activeadmin_settings_cached/model.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(args = {}) ⇒ Model

Returns a new instance of Model.



9
10
11
12
13
14
# File 'lib/activeadmin_settings_cached/model.rb', line 9

def initialize(args = {})
  @attributes = {}
  args[:model_name] = args[:model_name].constantize if args[:model_name].is_a? String
  args[:display] = default_attributes[:display].merge!(args[:display]) if args[:display]
  assign_attributes(merge_attributes(args))
end

Instance Attribute Details

#attributesObject (readonly) Also known as: to_hash

Returns the value of attribute attributes.



7
8
9
# File 'lib/activeadmin_settings_cached/model.rb', line 7

def attributes
  @attributes
end

Instance Method Details

#[](param) ⇒ Object



67
68
69
# File 'lib/activeadmin_settings_cached/model.rb', line 67

def [](param)
  settings_model[param]
end

#[]=(param, value) ⇒ Object



71
72
73
# File 'lib/activeadmin_settings_cached/model.rb', line 71

def []=(param, value)
  settings_model[param] = value
end

#defaultsObject



51
52
53
54
55
# File 'lib/activeadmin_settings_cached/model.rb', line 51

def defaults
  settings_model.respond_to?(:defaults) ?
      settings_model.defaults :
      ::RailsSettings::Default
end

#defaults_keysObject



57
58
59
60
61
# File 'lib/activeadmin_settings_cached/model.rb', line 57

def defaults_keys
  settings_model.respond_to?(:defaults) ?
      settings_model.defaults.keys :
      ::RailsSettings::Default.instance.keys
end

#displayObject



63
64
65
# File 'lib/activeadmin_settings_cached/model.rb', line 63

def display
  attributes[:display]
end

#field_name(settings_name) ⇒ Object



16
17
18
# File 'lib/activeadmin_settings_cached/model.rb', line 16

def field_name(settings_name)
  has_key? ? "#{attributes[:key]}.#{settings_name}" : settings_name
end

#field_options(settings_name, key_name) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/activeadmin_settings_cached/model.rb', line 20

def field_options(settings_name, key_name)
  default_value = defaults[settings_name]
  value = settings[key_name]

  input_opts = if default_value.is_a?(Array)
                 {
                   collection: default_value,
                   selected: value,
                 }
               elsif (default_value.is_a?(TrueClass) || default_value.is_a?(FalseClass)) &&
                     display[settings_name].to_s == 'boolean'
                 {
                   input_html: { checked: value }, label: '', checked_value: 'true', unchecked_value: 'false'
                 }
               else
                 {
                   input_html: { value: value, placeholder: default_value },
                 }
               end

  { as: display[settings_name], label: false }
    .merge!(input_opts)
end

#persisted?Boolean

Returns:

  • (Boolean)


83
84
85
# File 'lib/activeadmin_settings_cached/model.rb', line 83

def persisted?
  false
end

#save(key, value) ⇒ Object



75
76
77
78
79
80
81
# File 'lib/activeadmin_settings_cached/model.rb', line 75

def save(key, value)
  if has_key?
    settings_model.merge!(attributes[:key], { clean_key(key) => value })
  else
    self[key] = value
  end
end

#settingsObject



44
45
46
47
48
49
# File 'lib/activeadmin_settings_cached/model.rb', line 44

def settings
  data = has_key? ? load_settings_by_key : load_settings
  return unless data

  ::ActiveSupport::OrderedHash[data.to_a.sort { |a, b| a.first <=> b.first }]
end