我有一个应该呈现为 JSON 的模型,为此我使用了序列化程序
class UserSerializer
def initialize(user)
@user=user
end
def to_serialized_json
options ={
only: [:username, :id]
}
@user.to_json(options)
end
end
当我render json:
想添加一个 JWT 令牌和一个:errors
. 不幸的是,我很难理解如何向上面的序列化程序添加属性。以下代码不起作用:
def create
@user = User.create(params.permit(:username, :password))
@token = encode_token(user_id: @user.id) if @user
render json: UserSerializer.new(@user).to_serialized_json, token: @token, errors: @user.errors.messages
end
这段代码只渲染=> "{\"id\":null,\"username\":\"\"}"
,我怎样才能添加属性token:
等等errors:
来渲染这样的东西,但仍然使用序列化器:
{\"id\":\"1\",\"username\":\"name\", \"token\":\"eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxfQ.7NrXg388OF4nBKLWgg2tdQHsr3HaIeZoXYPisTTk-48\", \"errors\":{}}
我可以使用
render json: {username: @user.username, id: @user.id, token: @token, errors: @user.errors.messages}
但是如何通过使用序列化程序来获得相同的结果?