Есть ли способ применить условие для нескольких атрибутов в сериализаторе рельсов - PullRequest
0 голосов
/ 29 июня 2018

Хотелось бы узнать, есть ли более простой способ применить какое-либо условие к сериализатору с несколькими атрибутами (заранее извините, если не достаточно ясно), например:

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

  def condition?
    true
  end
end

Это должно получить все a, b и c в соответствии с условием

1 Ответ

0 голосов
/ 29 июня 2018

Это один из способов сделать это:

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

Я не проверял, но должен работать с / без незначительных изменений.

...