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.



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

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.



5
6
7
# File 'lib/activeadmin_settings_cached/model.rb', line 5

def attributes
  @attributes
end

Instance Method Details

#[](param) ⇒ Object



65
66
67
# File 'lib/activeadmin_settings_cached/model.rb', line 65

def [](param)
  settings_model[param]
end

#[]=(param, value) ⇒ Object



69
70
71
# File 'lib/activeadmin_settings_cached/model.rb', line 69

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

#defaultsObject



49
50
51
52
53
# File 'lib/activeadmin_settings_cached/model.rb', line 49

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

#defaults_keysObject



55
56
57
58
59
# File 'lib/activeadmin_settings_cached/model.rb', line 55

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

#displayObject



61
62
63
# File 'lib/activeadmin_settings_cached/model.rb', line 61

def display
  attributes[:display]
end

#field_name(settings_name) ⇒ Object



14
15
16
# File 'lib/activeadmin_settings_cached/model.rb', line 14

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

#field_options(settings_name, key_name) ⇒ Object



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

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)


81
82
83
# File 'lib/activeadmin_settings_cached/model.rb', line 81

def persisted?
  false
end

#save(key, value) ⇒ Object



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

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

#settingsObject



42
43
44
45
46
47
# File 'lib/activeadmin_settings_cached/model.rb', line 42

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