module Quickery::ActiveRecordExtensions::DSL::InstanceMethods

Public Instance Methods

autoload_unsynced_quickery_attributes!() click to toggle source

only considers quickery-defined attributes that has corresponding *_is_synced attribute

# File lib/quickery/active_record_extensions/dsl.rb, line 64
def autoload_unsynced_quickery_attributes!
  model = self.class
  new_values = {}.with_indifferent_access

  defined_quickery_attribute_names = model.quickery_builders.keys

  defined_quickery_attribute_names.each do |defined_quickery_attribute_name|
    if has_attribute?(:"#{defined_quickery_attribute_name}_is_synced") && !send(:"#{defined_quickery_attribute_name}_is_synced")
      new_values[defined_quickery_attribute_name] = determine_quickery_value(defined_quickery_attribute_name)
      new_values[:"#{defined_quickery_attribute_name}_is_synced"] = true
    end
  end

  update_columns(new_values) if new_values.present?
end
determine_quickery_value(depender_column_name) click to toggle source
# File lib/quickery/active_record_extensions/dsl.rb, line 46
def determine_quickery_value(depender_column_name)
  quickery_builder = self.class.quickery_builders[depender_column_name.to_sym]

  raise ArgumentError, "No defined quickery builder for #{depender_column_name}. Defined values are #{self.class.quickery_builders.keys}" unless quickery_builder

  dependee_record = quickery_builder.association_chains.first.dependee_record(self)
  dependee_record.public_send(quickery_builder.dependee_column_name) if dependee_record
end
determine_quickery_values() click to toggle source
# File lib/quickery/active_record_extensions/dsl.rb, line 55
def determine_quickery_values
  quickery_values = {}
  self.class.quickery_builders.each do |depender_column_name, quickery_builder|
    quickery_values[depender_column_name] = determine_quickery_value(depender_column_name)
  end
  quickery_values
end
recreate_quickery_cache!() click to toggle source
# File lib/quickery/active_record_extensions/dsl.rb, line 39
def recreate_quickery_cache!
  self.class.quickery_builders.each do |depender_column_name, quickery_builder|
    new_value = determine_quickery_value(depender_column_name)
    update_columns(depender_column_name => new_value)
  end
end