2

在我的 Rails 6/Grape API 应用程序中,我有一个序列化程序,我想只包含活动旅程(通过活动我的意思是 Journey.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: trueis_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 有什么不同吗?

4

1 回答 1

1

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

 current_user
  .journey_progresses
  .joins(:journey)
  .where(journeys: { is_deleted: false })
于 2020-08-14T21:21:24.890 回答