Блин, опять я ...RocketPants и ActiveModelSerializers пользовательских Serializer
Цитата RocketPants
мерзавец:
Support for
active_model_serializers
- If you want to use ActiveModelSerializers, we'll take care of it. Even better, in your expose call, pass through:serializer
as expected and we'll automatically take care of invoking it for you.
Так вот что я пытаюсь сделать:
def friends
@user = User.find_by_id(params[:id])
expose @user.friends.first(params[:limit].to_i), serializer: UserJustNameSerializer
end
И вот как Я реализую свои сериализаторы в user_serializer.rb
:
class UserSerializer < ActiveModel::Serializer
....
end
class UserJustNameSerializer < ActiveModel::Serializer
attributes :id, :first_name, :last_name, :full_name, :avatar_thumb
def avatar_thumb
object.avatar.url(:thumb)
end
end
Использование expose
без serializer
опция правильно подготавливает JSON согласно UserSerializer
. Попытка использовать UserJustNameSerializer
дает эту ошибку:
NameError (uninitialized constant Api::V1::UsersController::UserJustNameSerializer)
Таким образом, вопрос: как правильно показать RocketPants
путь к моему сериализатору? Теперь он пытается найти его в UserController.
, где находится ваш UserJustNameSerializer, является то, доступным в консоли. Попробуйте следующее: ' expose @ user.friends.first (params [: limit] .to_i), serializer: :: UserJustNameSerializer ' – VelLes
@VelLes 'NameError (неинициализированная константа UserJustNameSerializer):' now. Я действительно не знаю, что такое глобальный путь к этому классу. – ProdoElmit
Хм ... Подождите, у меня есть проблема. Перемещено 'UserJustNameSerializer' в другой файл, теперь ошибка отличается:' undefined method 'read_attribute_for_serialization 'для []: Array'. Идти в эту проблему. – ProdoElmit