我有一个帮助模块如下所示。模块使用典狱长。
module V0
module Api
# @private
module Helpers
def warden
env['warden']
end
# Used to require an authenticated user for a particular action.
def protected!
warden.authenticate!
end
def current_user
warden.user
end
def parse_json_body
request.body.rewind
request_body = current_user ? current_user.keychain_replace(request.body.read) : request.body.read
@parsed_body = JSON.parse(request_body, symbolize_names: true)
params.update @parsed_body
end
end
end
end该模块解析一个请求。排在队伍里
request_body = current_user ? current_user.keychain_replace(request.body.read) : request.body.read我试着检查是否设置了当前用户并相应地获取request_body。然而,我得到以下错误。
NoMethodError:
undefined method `[]' for nil:NilClass
# (eval):2:in `method_missing'
# ./app/api/v0/helpers.rb:11:in `warden'
# ./app/api/v0/helpers.rb:23:in `current_user'
# ./app/api/v0/helpers.rb:37:in `parse_json_body'如果没有设置当前用户,则应该设置
request_body = request.body.read但我不明白
发布于 2014-08-05 12:41:27
而不是
request_body = current_user ? current_user.key ..试一试
request_body = !current_user.nil? ? current_user.key ..这将得到一个正确/错误的反应来评估..。我放的!来保持你们论点的顺序。
这有点猜测,但我认为这是在评估一个零,而不是寻找虚假的属性。
发布于 2014-08-05 12:58:06
问题似乎在于您的warden方法。env变量是nil。检查您的模块是否正确加载。
https://stackoverflow.com/questions/25137542
复制相似问题