Я просмотрел всю документацию по сериализатору активной модели (v 0.9.0) и вопросы SO, которые я могу найти, но не могу понять это.
У меня есть объекты, которые можно пометить как «опубликованные» или «черновики». Когда они не опубликованы, их должен видеть только пользователь, создавший объект. Я, очевидно, могу установить разрешения для «показать» в моем контроллере, но я также хочу удалить эти объекты из json, которое возвращает мое действие «индекс», если это не правильный пользователь. Есть ли способ полностью удалить этот объект из json, возвращаемого сериализатором?
В моем сериализаторе ActiveModel я могу использовать пользовательский фильтр (ключи) и перегруженные атрибуты для удаления данных, как показано с использованием моего кода ниже, но я не могу просто удалить весь объект (мне остается вернуть пустой { } в моем json попытка вернуть nil ломает сериализатор).
Я, наверное, упускаю что-то простое. Любая помощь приветствуется!
class CompleteExampleSerializer < ExampleSerializer
attributes :id, :title
has_many :children
def attributes
data = super
(object.published? || object.user == scope || scope.admin?) ? data : {}
end
def filter(keys)
keys = super
(object.published? || object.user == scope || scope.admin?) ? keys : {}
end
end