Сериализатор активной модели вызывает бесконечные l oop и SystemStackError - PullRequest
1 голос
/ 19 февраля 2020

У меня есть сериализатор для моей модели Client, который вызывает бесконечное l oop, когда я включаю has_many :referrers в ClientSerializer.

class Client < ActiveRecord::Base
    has_many :referrals, class_name: 'Referral', foreign_key: 'referrer_id'
    has_many :referrals_as_referred, class_name: 'Referral', foreign_key: 'referred_id'
    has_many :referred_clients, through: :referrals, source: :referred
    has_many :referrers, through: :referrals_as_referred, source: :referrer
end

class Referral < ActiveRecord::Base
    belongs_to :referrer, class_name: 'Client'
    belongs_to :referred, class_name: 'Client'
end

В моем сериализаторе успешно работает следующее :

class API::ClientSerializer < ActiveModel::Serializer
    attributes :referrers

    # has_many :referrers
    has_many :referrals

    def referrers
        object.referrers
    end
end

Но это вызывает бесконечную ошибку l oop и стека:

class API::ClientSerializer < ActiveModel::Serializer
    has_many :referrers
    has_many :referrals
end

Почему это происходит?

...