Как использовать active_model_serializers для включения по умолчанию всех атрибутов и их фильтрации?

Я использую active_model_serializers и хотел бы найти способ включить все атрибуты модели по умолчанию, а затем использовать что-то вроде этого

       exclude :date_created, :first_name

чтобы указать те, которые мне не нужны.

До сих пор я не нашел способа указать экспортируемые атрибуты, кроме тех, которые указаны в документах, и это делается путем перечисления всех необходимых атрибутов:

       attributes :title, :body

person tavi    schedule 09.03.2013    source источник


Ответы (1)


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

class UserSerializer < ApplicationModelSerializer
   attributes(*User.attribute_names.map(&:to_sym))
end

Дополнительную информацию об именах атрибутов ActiveRecord можно найти здесь: http://apidock.com/rails/ActiveRecord/AttributeMethods/attribute_names

person Felix Tjandrawibawa    schedule 31.05.2013
comment
Спасибо. Окончательное решение будет таким: attributes(*(User.attribute_names - ["date_created", "first_name"] ).map(&:to_sym)) - person tavi; 13.07.2013
comment
У меня возникла ошибка, пожалуйста, обратитесь к моему ответу здесь: stackoverflow.com/a/27701138/243797 - person xhh; 30.12.2014
comment
к сожалению, attributes не принимает массив в качестве входных данных :( - person Tilo; 15.01.2015
comment
@Tilo: Вот почему они используют звездочку (*) перед массивом. Он преобразует массив в список параметров. - person Roman; 28.04.2015