【发布时间】:2015-11-23 19:09:49
【问题描述】:
我在我的 Rails 4 API 中使用 Active Model Serializers,我一直在试图弄清楚当用户在 @ 登录时如何在我的 JSON 响应中包含 auth_token 属性仅 987654323@。我阅读了AMS documentation 并尝试了大多数看似解决方案,但都没有奏效。
需要指出的几点:
-
:auth_token不在UserSerializer的属性列表中。 - 由于
auth_token是特定于控制器的,我无法在UserSerializer中执行条件逻辑,除非有办法确定在串行器中调用了哪个控制器。所以没有def include_auth_token? ... end。
我已经尝试过的一些事情:
class Api::V1::SessionsController < ApplicationController
if user = User.authenticate(params[:session][:email], params[:session][:password])
if user.active
user.generate_auth_token #=> Custom method
user.save
# Tried using the meta param
render :json => user, :meta => {:auth_token => user.auth_token}
# Tried using the include param both with 'auth_token' and 'user.auth_token'
render :json => user, include: 'user.auth_token'
end
end
end
理想情况下,我希望能够使用类似于render :json => user, :include => :auth_token 的东西来另外包含UserSerializer 中尚未定义的属性。
使用 AMS 有条件地包含来自控制器的属性的正确方法是什么?
【问题讨论】:
标签: ruby-on-rails ruby json api rest