在我的 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: 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 有什么不同吗?