在activemodel序列化程序中使用带有条件的属性

时间:2015-07-23 17:39:34

标签: ruby-on-rails ruby active-model-serializers

class ProjectSerializer < ActiveModel::Serializer
  attributes :id, :title
end

我使用activemodel序列化程序返回一些条件的title属性。通常我可以覆盖标题方法,但我想要的是确定是否返回title属性。

1 个答案:

答案 0 :(得分:1)

我不确定您的用例是什么,但也许您可以使用非常神奇的include_方法!他们是最酷的!

class ProjectSerializer < ActiveModel::Serializer
  attributes :id, :title

  def include_title?
    object.title.present?
  end
end

如果object.title.present?true,则序列化程序将返回title属性。如果是false,则title属性将完全取消。请注意,include_方法附带了自己的特定功能,并自动执行操作。它不能在序列化器中的其他地方调用。

如果您需要能够调用该方法,您可以创建自己的&#34; local&#34;您可以在序列化程序中使用的方法。

class ProjectSerializer < ActiveModel::Serializer
  attributes :id, :title

  def title?
    object.title.present?
  end
end

同样,不确定您正在寻找什么功能,但希望这能让您朝着正确的方向前进。