活动模型序列化器条件关联

Dan*_*Dan 5 ruby-on-rails-3 active-model-serializers ruby-on-rails-4

是否有可能在逐个记录的基础上有条件地在活动模型序列化程序中包含has_one关联?

在我的情况下,如果组是"隐形"类型,我不需要返回称为"组"的关联.这是我的序列化程序的一个片段.

class PostFeedSerializer < ActiveModel::Serializer
  attributes :id, :title, :thumbnail_photo, :view_count, :ago, :created_by
  has_one :group, serializer: GroupSerializer
Run Code Online (Sandbox Code Playgroud)

我想做的是:

has_one :group, serializer: GroupTinySerializer unless object.get_group.invisible?
Run Code Online (Sandbox Code Playgroud)

Aro*_*ron 12

假设您使用的版本〜> 0.8.0,您应该可以将以下内容放入您的版本中PostFeedSerializer.

def include_group?
  !object.get_group.invisible?
end
Run Code Online (Sandbox Code Playgroud)

group只要include_group?返回true,这将有条件地包含对象.

看起来在未来的版本中,AMS将被移动到filter替代include_x?方法.