Sha256: 18a76be95c373b42297804a0ec69d2c4f7dfb4478e97f4cdc8ce94848023aef8

Contents?: true

Size: 846 Bytes

Versions: 1

Compression:

Stored size: 846 Bytes

Contents

# frozen_string_literal: true

require "active_support/core_ext/module/delegation"

module RelationToJSON
  class BaseReflection
    attr_reader :reflection, :name
    attr_accessor :required_columns

    def initialize(reflection, reflection_name, reflection_columns)
      @reflection = reflection
      @name = reflection_name
      @required_columns = reflection_columns
    end

    delegate :active_record, :polymorphic?, :klass, to: :reflection

    def primary_key
      reflection.active_record.primary_key.to_sym
    end

    def foreign_key
      reflection.foreign_key.to_sym
    end

    private

    def recurse_json_with_schema(transposed)
      RelationToJSON::Base.new(association_relation(transposed), required_columns).as_json
    end

    def nested_relations?
      required_columns.any? { _1.is_a?(Hash) }
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
relation_to_json-0.1.0 lib/relation_to_json/base_reflection.rb