Sha256: e828b112ea4d96bf37c32838dadf6f751c751cde34ca40cbd0e29f858477464a
Contents?: true
Size: 928 Bytes
Versions: 2
Compression:
Stored size: 928 Bytes
Contents
require 'encore/serializer/utils' module Encore module Serializer module LinkedResourceManager extend ActiveSupport::Concern def self.add(linked_ids, object) included_models = linked_ids.keys.map { |key| key.downcase } included_models << object.klass.name.downcase linked_ids.reduce({}) do |memo, (model, ids)| klass = model.constantize serializer = Utils.fetch_serializer(klass) collection = klass.where(id: ids.to_a) reflections = klass.try(:_reflections) || klass.reflections available_includes = reflections.map do |key, _| next unless included_models.include?(key.to_s) key end.compact collection = collection.includes(available_includes) unless available_includes.empty? memo.merge! MainResourceManager.add(collection, serializer) end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
encore-0.2.3 | lib/encore/serializer/linked_resource_manager.rb |
encore-0.2.2 | lib/encore/serializer/linked_resource_manager.rb |