有没有办法在Rails序列化程序中的多个属性上应用条件

时间:2018-06-29 07:26:47

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

我想知道是否有一种更简单的方法来对具有多个属性的序列化器应用任何条件(例如,如果不够清楚,请提前表示抱歉),例如:

class AbcSerializer < ActiveModel::Serializer
  attributes :a, :b, :c, if: :condition?

  def condition?
    true
  end
end

这应该根据条件得到a,b和c

1 个答案:

答案 0 :(得分:1)

这是一种实现方式:

class AbcSerializer < ActiveModel::Serializer
  attributes :a, :b, :c

  def attributes(*args)
    hash = super
    hash.delete_if { |k, _| %i[a b c].include? k } unless condition?
    hash
  end

  def condition?
    true
  end
end

我尚未对其进行测试,但应该进行/不进行细微改动。