Большинство вопросов по SO, кажется, слишком устарели, чтобы решить эту проблему.
Я хочу сериализовать модель.
Вот как выглядит мой сериализатор -
class AssignmentSerializer < ActiveModel::Serializer
belongs_to :lesson, class_name: "Lesson"
attributes :id, :student_id, :tutor, :name, :start_date, :end_date, :description, :lesson
end
Это прекрасно работает для ситуаций, когда вы хотите сериализовать отдельный объект в этой форме.
def index
if current_user&.student?
@assignments = Assignment.where(student_id: current_user.id)
@assignments_due = Assignment.find_due(current_user)
@submitted_assignments = Assignment.find_submitted(current_user)
elsif current_user&.tutor?
@assignments = Assignment.where(tutor_id: current_user.id)
end
respond_to do |format|
format.json { render json: @assignments }
end
end
Но не работает, когда я хочу сериализовать несколько объектов следующим образом:
def index
if current_user&.student?
@assignments = Assignment.where(student_id: current_user.id)
@assignments_due = Assignment.find_due(current_user)
@submitted_assignments = Assignment.find_submitted(current_user)
elsif current_user&.tutor?
@assignments = Assignment.where(tutor_id: current_user.id)
end
respond_to do |format|
format.json { render json: {
assignments: @assignments,
assignments_due: @assignments_due,
submitted_assignments: @submitted_assignments
}, each_serializer: AssignmentSerializer
}
end
end
Я пробовал несколько методов, следуя различным методам, которые я видел в этой документации , но, похоже, ни один из них не работает.
Есть идеи, что я могу делать не так?
Обновление попыталось, как предложено в ответе и комментарии, но этот подход не сработал. Пробовал с ключом each_serializer и без него
respond_to do |format|
format.json { render json: {
assignments: @assignments.as_json,
assignments_due: @assignments_due.as_json,
submitted_assignments: @submitted_assignments.as_json
}, each_serializer: AssignmentSerializer
}
end