Sha256: 5800bd247826863a4459c1d7d872f8a28bd96af81c51f233b501aba658f4ebff

Contents?: true

Size: 848 Bytes

Versions: 1

Compression:

Stored size: 848 Bytes

Contents

module JsonapiCompliable
  module Adapters
    module ActiveRecord
      class ManyToManySideload < Sideload::ManyToMany
        def default_base_scope
          resource_class.model.all
        end

        def through_table_name
          @through_table_name ||= parent_resource_class.model
            .reflections[through.to_s].klass.table_name
        end

        def scope(parent_ids)
          base_scope
            .includes(through)
            .where(through_table_name => { true_foreign_key => parent_ids })
            .distinct
        end

        def infer_foreign_key
          parent_model = parent_resource_class.model
          key = parent_model.reflections[name.to_s].options[:through]
          value = parent_model.reflections[key.to_s].foreign_key.to_sym
          { key => value }
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
jsonapi_compliable-1.0.alpha.2 lib/jsonapi_compliable/adapters/active_record/many_to_many_sideload.rb