0

У меня есть сериалайзер на рельсах, что есть еще один вложенный сериалайзер внутри как этотRails 4.2 Active Record Serializer JSON выпуск Формат

class FeedSerializer < ActiveModel::Serializer 
    attributes :id 

    has_one :user 

    def user 
    if object.anonymous 
     nil 
    else 
     UserFeedSerializer.new(object.user) 
    end 
    end 
end 

Я ожидал, что ответ JSON, чтобы быть как

{ 
    "feed": { 
     "id": 10 
     "user": { 
      "id": 10 
     } 
    } 
} 

Но вместо того, чтобы это делая это:

{ 
    "feed": { 
     "id": 10 
     "user": { 
      "user_feed": { 
       "id": 10 
      } 
     } 
    } 
} 

Почему это включает дополнительное гнездо?

ответ

1

Поскольку вы передаете сериализатор для отношения пользователя, а не сам экземпляр пользователя. Попробуйте отключить обертку корневого атрибута, разместив root false в верхней части UserFeedSerializer.

+0

Огромное спасибо, что это было! Знаете ли вы, можете ли вы включить или отключить это, если я хочу использовать 'UserFeedSerializer' в качестве корня для другого канала вместо добавления' self.root = false' в файл класса? –

+0

Nevermind thanks Я понял это –

+0

Подкласс специально для этого случая. :) –

Смежные вопросы