我正在我的控制器中使用json对我的创建动作发出POST请求:
{
"token":"amsdaashdaksjdh" #assume this is a valid token for a user
"post": {
"content":"some random text"
"title":"random title"
}
}
但是,我有一个before_filter检查,看看User是否在我的数据库中,基于这样的令牌:
before_filter :authenticate
def authenticate
@user = User.find_by_authentication_token(params[:token])
if (@user == nil)
render :json => {error: "invalid token"}
end
end
总是给我无效的令牌错误......
答案 0 :(得分:0)
当过滤器返回before_filter
或nil
时,Rails false
会暂停处理链。由于您的if
语句是最后执行的操作,因此当nil
不是@user
时,过滤器将返回nil
,这将停止处理。
您可以添加else
块,在找到用户后返回true。
def authenticate
@user = User.find_by_authentication_token(params[:token])
if @user.nil?
render :json => {error: "invalid token"}
false
else
true
end
end