class HasConfig::ActiveRecord::Processor

Public Class Methods

new(model) click to toggle source
# File lib/has_config/active_record/processor.rb, line 4
def initialize(model)
  @model = model
end

Public Instance Methods

fetch(configuration, parent: nil, mode: :none) click to toggle source
# File lib/has_config/active_record/processor.rb, line 8
def fetch(configuration, parent: nil, mode: :none)
  local = local_value(has_config_column_data, configuration)

  if parent && mode == :resolve && HasConfig::Chain.invoke?(local, configuration.chain_on)
    check_chain(configuration, parent)
    parent_value = @model.public_send(parent).public_send(configuration.name, :resolve)
    return parent_value unless parent_value.blank?
  end

  local
end
set(configuration, value) click to toggle source
# File lib/has_config/active_record/processor.rb, line 20
def set(configuration, value)
  data          = has_config_column_data
  parsed_value  = HasConfig::ValueParser.parse(value, configuration.type)

  if data[configuration.name] != parsed_value
    data[configuration.name] = parsed_value
    @model.send(:write_attribute, has_config_column, data)
    @model.public_send("#{has_config_column}_will_change!")
  end
end