我有以下的Serializer类:
class BooksSerializer < ActiveModel::Serializer
attributes :name, :position
attributes :pages unless object.children.present?
但它因为SectionSerializer:Class的错误“未定义的方法`对象”而崩溃了。如何针对这些条件获得对象参数?
我只能在函数内部访问对象。例如:
def pages
object.pages ....
end
但我需要按条件从序列化中排除某些字段。
答案 0 :(得分:2)
我找到了解决方案:
class BooksSerializer < ActiveModel::Serializer
attributes :name
def attributes(*args)
hash = super
hash[:pages] = pages unless object.children.present?
hash
end
def pages
....
end
....
end
答案 1 :(得分:0)
这是一个更新的解决方案:
class BooksSerializer < ActiveModel::Serializer
attributes :name
attribute :pages, if: -> { object.children.present? }
def pages
...
end
end