Rails current_user ip возвращает nil по неизвестной причине
В моем контроллере приложения у меня есть этот код
def user_ip
request.remote_ip
@remote_ip = current_user.request.env["HTTP_X_FORWARDED_FOR"]
end
то, что я пытаюсь сделать, это добавить IP-адрес current_users в систему аналитики, которая находится в другом static_controller.rb со следующим кодом
def matrimonials
Analytics.identify(
user_id: current_user.id,
traits: { email: "#{ current_user.email }", ip: @remote_ip, friends: 100 },
context: {ip: @remote_ip }
)
Analytics.track(
user_id: current_user.id,
user_email: current_user.email,
event: 'Viewed Matrimonials',
properties: {
name: 'Matrimonials page'
}
) if user_signed_in?
end
в моем аналитическом отладчике я получаю такой результат:
Analytics.identify(
user_id: '1',
traits: {
email: 'test@test.com',
friends: 100,
**ip: nil**
}
)
почему ip nil? Я установил запрос в контроллере приложения, от которого наследуется статический контроллер.
1 ответ
Решение
Вы можете попробовать это: Определить вас user_ip
в качестве вспомогательного метода и использовать его в себе matrimonials
метод.
class ApplicationController < ActionController::Base
helper_method :user_ip
def user_ip
#...
end
end
def matrimonials
#...
context: {ip: user_ip }
end