class Quickery::CallbacksBuilder
Attributes
quickery_builder[R]
Public Class Methods
new(quickery_builder:)
click to toggle source
# File lib/quickery/callbacks_builder.rb, line 5 def initialize(quickery_builder:) @quickery_builder = quickery_builder end
Public Instance Methods
build_callbacks()
click to toggle source
# File lib/quickery/callbacks_builder.rb, line 9 def build_callbacks build_callback_to_depender_model build_callback_to_dependee_model build_callback_to_each_intermediate_model end
Private Instance Methods
build_callback_to_dependee_model()
click to toggle source
add callback to sync changes when dependee_column has been updated
# File lib/quickery/callbacks_builder.rb, line 25 def build_callback_to_dependee_model last_association_chain = @quickery_builder.association_chains.last last_association_chain.model.quickery_association_chain_dependees ||= [] last_association_chain.model.quickery_association_chain_dependees << last_association_chain end
build_callback_to_depender_model()
click to toggle source
add callback to immediately sync value after a record has been created / updated
# File lib/quickery/callbacks_builder.rb, line 18 def build_callback_to_depender_model first_association_chain = @quickery_builder.association_chains.first first_association_chain.model.quickery_association_chain_dependers ||= [] first_association_chain.model.quickery_association_chain_dependers << first_association_chain end
build_callback_to_each_intermediate_model()
click to toggle source
also add callbacks to sync changes when intermediary associations have been changed (this does not include first and last builder)
# File lib/quickery/callbacks_builder.rb, line 32 def build_callback_to_each_intermediate_model last_association_chain = @quickery_builder.association_chains.last last_association_chain.parent_association_chains(include_self: true)[1..-2].each do |association_chain| association_chain.model.quickery_association_chain_intermediaries ||= [] association_chain.model.quickery_association_chain_intermediaries << association_chain end end