Sha256: bb2fc2015b29fab3f3706726ef74ead58b26b4dd0b6a182f3b06c38b4e832f0b
Contents?: true
Size: 1.33 KB
Versions: 2
Compression:
Stored size: 1.33 KB
Contents
require 'byebug' require 'active_support' module Quickery module ActiveRecordExtensions module DSL def self.included(base) base.extend ClassMethods base.include InstanceMethods end module ClassMethods def quickery(&block) association_builder = AssociationBuilder.new(model: self) association_builder.instance_exec(&block) end end module InstanceMethods 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 true end def determine_quickery_value(depender_column_name) quickery_builder = self.class.quickery_builders[depender_column_name] 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.first_association_builder._quickery_dependee_record(self) dependee_record.send(quickery_builder.dependee_column_name) end end end end end ActiveSupport.on_load(:active_record) do include Quickery::ActiveRecordExtensions::DSL end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
quickery-0.1.1 | lib/quickery/active_record_extensions/dsl.rb |
quickery-0.1.0 | lib/quickery/active_record_extensions/dsl.rb |