module Synchronisable::DSL::Associations::ClassMethods
Public Instance Methods
associations_for(attrs)
click to toggle source
Builds hash with association as key and array of ids as value.
@param attrs [Hash] local record attributes
@return [Hash<Synchronisable::Association, Array>] associations hash
@raise [MissedAssocationsError] raised when the given
attributes hash doesn't required associations
# File lib/synchronisable/dsl/associations.rb, line 33 def associations_for(attrs) ensure_required_associations(attrs) intersection = self.associations.map { |key, _| key } & attrs.keys Hash[intersection.map { |key| [self.associations[key], [*attrs[key]]] }] end
inherited(subclass)
click to toggle source
Calls superclass method
# File lib/synchronisable/dsl/associations.rb, line 14 def inherited(subclass) super subclass.associations = {} end
Private Instance Methods
ensure_required_associations(attrs)
click to toggle source
# File lib/synchronisable/dsl/associations.rb, line 42 def ensure_required_associations(attrs) missing = required_associations - attrs.keys if missing.present? raise MissedAssociationsError, I18n.t( 'errors.missed_associations', keys: missing, attrs: attrs ) end end
required_associations()
click to toggle source
# File lib/synchronisable/dsl/associations.rb, line 52 def required_associations self.associations.select { |_, a| a.required }.keys end