class Quickery::MappingsBuilder
Attributes
mappings[R]
model[R]
Public Class Methods
new(model:, mappings:)
click to toggle source
# File lib/quickery/mappings_builder.rb, line 6 def initialize(model:, mappings:) @model = model @mappings = mappings end
Public Instance Methods
flat_hash(hash, k = [])
click to toggle source
stackoverflow.com/questions/9647997/converting-a-nested-hash-into-a-flat-hash
# File lib/quickery/mappings_builder.rb, line 12 def flat_hash(hash, k = []) return {k => hash} unless hash.is_a?(Hash) hash.inject({}){ |h, v| h.merge! flat_hash(v[-1], k + [v[0]]) } end
map_attributes()
click to toggle source
# File lib/quickery/mappings_builder.rb, line 17 def map_attributes flat_hash(@mappings).each do |names, depender_column_name| first_association_chain = AssociationChain.new(model: model) first_association_chain.build_children_association_chains(names_left: names) all_association_chains = first_association_chain.child_association_chains(include_self: true) dependee_column_name = all_association_chains.last.dependee_column_name quickery_builder = QuickeryBuilder.new( model: @model, association_chains: all_association_chains, dependee_column_name: dependee_column_name, depender_column_name: depender_column_name, ) quickery_builder.add_to_model quickery_builder.add_to_association_chains quickery_builder.create_model_callbacks end end