module Flapjack::Data::Extensions::Associations::ClassMethods

Public Instance Methods

jsonapi_lock_method(http_method, locks = nil, &block) click to toggle source
# File lib/flapjack/data/extensions/associations.rb, line 21
def jsonapi_lock_method(http_method, locks = nil, &block)
  locks ||= []

  if :delete.eql?(http_method)
    # all associations, not just the ones exposed via JSONAPI
    self.send(:with_association_data) do |assoc_data|
      assoc_data.each_pair do |name, data|
        locks |= [data.data_klass] + data.related_klasses
      end
    end

    locks |= jsonapi_associations.values.select {|a|
      !a.type.nil?
    }.map(&:lock_klasses).reduce([], :|)
  end

  if locks.empty?
    self.lock(&block)
  else
    locks.sort_by!(&:name)
    self.lock(*locks, &block)
  end
end
populate_association_data(jsonapi_assoc) click to toggle source
# File lib/flapjack/data/extensions/associations.rb, line 45
def populate_association_data(jsonapi_assoc)
  # SMELL mucking about with a zermelo protected method...
  self.send(:with_association_data) do |assoc_data|
    assoc_data.each_pair do |name, data|
      ja = jsonapi_assoc[name.to_sym]
      next if ja.nil?
      ja.association_data = data
    end
  end
end