У меня есть вспомогательный модуль следующим образом. В модуле используется надзиратель.
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
но я не понимаю этого