带日期的条件活动模型序列化程序
Conditional Active Model Serializer with Dates
我需要设置一个条件,以便日期小于当前日期的事件不会显示在 JSON 中,并且只能看到即将发生的事件。
class EventSerializer < ActiveModel::Serializer
attributes :end_date
def end_date
date_to_show = object.stop || (object.start + 1.day).beginning_of_day
object.museum.time_zone ? ActiveSupport::TimeZone[object.match.time_zone].local_to_utc(date_to_show) : date_to_show
end
class FeedSerializer < ActiveModel::Serializer
has_many :events, if: -> { upcoming_event }, serializer: EventSerializer
def upcoming_event
???
end
end
创建自定义关联以仅根据日期过滤未来事件并在序列化程序中使用它。
在 Feeds 模型中,您将拥有类似下面的内容以及实际的关联。
has_many :events, if: -> { upcoming_event }, serializer: EventSerializer
has_many :future_events, -> { where(date < Date.today) }, class_name: 'Event' # Change the name, conditions as per your requirement.
并访问 feed 序列化程序中的自定义关联,
class FeedSerializer < ActiveModel::Serializer
has_many :future_events
end
我需要设置一个条件,以便日期小于当前日期的事件不会显示在 JSON 中,并且只能看到即将发生的事件。
class EventSerializer < ActiveModel::Serializer
attributes :end_date
def end_date
date_to_show = object.stop || (object.start + 1.day).beginning_of_day
object.museum.time_zone ? ActiveSupport::TimeZone[object.match.time_zone].local_to_utc(date_to_show) : date_to_show
end
class FeedSerializer < ActiveModel::Serializer
has_many :events, if: -> { upcoming_event }, serializer: EventSerializer
def upcoming_event
???
end
end
创建自定义关联以仅根据日期过滤未来事件并在序列化程序中使用它。
在 Feeds 模型中,您将拥有类似下面的内容以及实际的关联。
has_many :events, if: -> { upcoming_event }, serializer: EventSerializer
has_many :future_events, -> { where(date < Date.today) }, class_name: 'Event' # Change the name, conditions as per your requirement.
并访问 feed 序列化程序中的自定义关联,
class FeedSerializer < ActiveModel::Serializer
has_many :future_events
end