Rails Fast Json API包含范围

问题描述

在我的Rails 6 / Grape API应用程序中,我有一个序列化器,我只想包含活动旅程(活动,是指travel.is_deleted:false)。当前端点如下:

helpers do
  def query
    current_user.journey_progresses.joins(:journey).where('is_deleted',false)
  end
end

get :journeys do
  ::journeys::EnrolledjourneysSerializer.new(
    query,include: [:journey],class: { journey: ::journeys::journeyListSerializer },)
end

包括所有旅程,无论它们是is_deleted: true还是is_deleted: false。我只想在is_deleted: false中包含旅程,而不在序列化响应中显示删除的旅程。

EnrolledjourneysSerializer

module journeys
  class EnrolledjourneysSerializer
    include FastJsonapi::ObjectSerializer

    belongs_to :journey,serializer: journeyListSerializer
    set_type :percent_progress
    attributes :percent_progress,:started_at
  end
end

journeyListSerializer

module journeys
  class journeyListSerializer
    include FastJsonapi::ObjectSerializer

    attribute :content do |object|
      object.content.dig('attributes')
    end
  end
end

journey模型上,与default_scope有什么不同吗?

解决方法

此行是错误的,需要更改为...

 current_user
  .journey_progresses
  .joins(:journey)
  .where(journeys: { is_deleted: false })