我想知道是否有一种更简单的方法来对具有多个属性的序列化器应用任何条件(例如,如果不够清楚,请提前表示抱歉),例如:
class AbcSerializer < ActiveModel::Serializer
attributes :a, :b, :c, if: :condition?
def condition?
true
end
end
这应该根据条件得到a,b和c
答案 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
我尚未对其进行测试,但应该进行/不进行细微改动。