class ActiveadminSettingsCached::Model

Attributes

attributes[R]
to_hash[R]

Public Class Methods

new(args = {}) click to toggle source
# 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

Public Instance Methods

[](param) click to toggle source
# File lib/activeadmin_settings_cached/model.rb, line 67
def [](param)
  settings_model[param]
end
[]=(param, value) click to toggle source
# File lib/activeadmin_settings_cached/model.rb, line 71
def []=(param, value)
  settings_model[param] = value
end
defaults() click to toggle source
# File lib/activeadmin_settings_cached/model.rb, line 51
def defaults
  settings_model.respond_to?(:defaults) ?
      settings_model.defaults :
      ::RailsSettings::Default
end
defaults_keys() click to toggle source
# 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
display() click to toggle source
# File lib/activeadmin_settings_cached/model.rb, line 63
def display
  attributes[:display]
end
field_name(settings_name) click to toggle source
# 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) click to toggle source
# 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?() click to toggle source
# File lib/activeadmin_settings_cached/model.rb, line 83
def persisted?
  false
end
save(key, value) click to toggle source
# 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
settings() click to toggle source
# 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

Protected Instance Methods

assign_attributes(args = {}) click to toggle source
# File lib/activeadmin_settings_cached/model.rb, line 107
def assign_attributes(args = {})
  @attributes.merge!(args)
end
clean_key(key) click to toggle source
# File lib/activeadmin_settings_cached/model.rb, line 103
def clean_key(key)
  key.is_a?(Symbol) ? key : "#{key.sub("#{attributes[:key]}.", '')}"
end
default_attributes() click to toggle source
# File lib/activeadmin_settings_cached/model.rb, line 111
def default_attributes
  {
    starting_with: nil,
    key: nil,
    model_name: ::ActiveadminSettingsCached.config.model_name,
    display: ::ActiveadminSettingsCached.config.display
  }
end
has_key?() click to toggle source
# File lib/activeadmin_settings_cached/model.rb, line 99
def has_key?
  attributes[:key].present?
end
load_settings() click to toggle source
# File lib/activeadmin_settings_cached/model.rb, line 91
def load_settings
  settings_model.public_send(meth, attributes[:starting_with])
end
load_settings_by_key() click to toggle source
# File lib/activeadmin_settings_cached/model.rb, line 95
def load_settings_by_key
  self[attributes[:key]]
end
merge_attributes(args) click to toggle source
# File lib/activeadmin_settings_cached/model.rb, line 120
def merge_attributes(args)
  default_attributes.each_with_object({}) do |(k, v), h|
    h[k] = args[k] || v
  end
end
meth() click to toggle source
# File lib/activeadmin_settings_cached/model.rb, line 130
def meth
  if Rails.version >= '4.1.0'
    :get_all
  else
    :all
  end
end
settings_model() click to toggle source
# File lib/activeadmin_settings_cached/model.rb, line 126
def settings_model
  attributes[:model_name]
end