Module: Quickery::ActiveRecordExtensions::DSL::InstanceMethods

Defined in:
lib/quickery/active_record_extensions/dsl.rb

Instance Method Summary collapse

Instance Method Details

#autoload_unsynced_quickery_attributes!Object

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



66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/quickery/active_record_extensions/dsl.rb', line 66

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) ⇒ Object

Raises:

  • (ArgumentError)


48
49
50
51
52
53
54
55
# File 'lib/quickery/active_record_extensions/dsl.rb', line 48

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_valuesObject



57
58
59
60
61
62
63
# File 'lib/quickery/active_record_extensions/dsl.rb', line 57

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!Object



41
42
43
44
45
46
# File 'lib/quickery/active_record_extensions/dsl.rb', line 41

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