Skip to content

Resources with circular relationships fail to load #453

Open
@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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions