У меня есть модель пользователя и модель занятости, например:
Class User
has_many :employments
Class Employment
belongs_to :user
Я отправляю JSON API через активный сериализатор модели следующим образом:
class EmploymentSerializer < ActiveModel::Serializer
attributes :id
has_one :user
class UserSerializer < ActiveModel::Serializer
attributes :id
Все работает как надо. Вот проблема:
Когда current_user является работодателем, я бы загружал рабочие места с ассоциациями пользователей, которые отлично работают. Когда current_user не является работодателем, я хочу загрузить рабочие места, принадлежащие пользователю.
Поскольку EmploymentSerializer has_one :user, это приводит к рекурсивному запросу, в котором current_user has_one занятости has_one current_user до бесконечности.
Я попытался добавить этот метод в EmploymentSerializer, но он не работает:
def include_user?
object.user != scope
end
Как мне загрузить рабочие места current_user?
Решение
Рекурсию вызвал другой сериализатор, и этот вопрос неактуален. АМС работает как надо.