Skip to content

Resources with circular relationships fail to load #453

@camsteffen

Description

@camsteffen

Resources that form a cycle, especially where inheritance is involved, fail to load properly. Graphiti seems to always eagerly load related resource classes unlike ActiveRecord.

Implementation:

# person_resource.rb
class PersonResource < Graphiti::Resource
  self.abstract_class = true # this line is not necessary but changes the error
  has_one :company
end

# employee_resource.rb
class EmployeeResource < PersonResource
end

# company_resource.rb
class CompanyResource < Graphiti::Resource
  has_many :employees
end

Test:

require "rails_helper"

RSpec.describe "load EmployeeResource first" do
  it "works" do
    EmployeeResource
  end
end

Test output:

NoMethodError: undefined method `relationship_blocks' for nil:NilClass

        @serializer.relationship_blocks[sideload.name].nil? &&
                   ^^^^^^^^^^^^^^^^^^^^

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions