当我登录应用程序时,会调用下面的代码。因此,在 SessionsController 中,SignupHistory 表被填充了该.create
方法。
application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
helper_method :current_user
before_action :set_timezone, :current_country
def current_country
if session[:ip_country_code].present?
return @current_country = session[:ip_country_code]
end
use_default = request.location.nil? || request.location.country_code.blank? || request.location.country_code == 'RD'
country_code = use_default ? ENV['DEFAULT_IP_COUNTRY_CODE'] : request.location.country_code
@current_country = session[:ip_country_code] = country_code
end
end
session_controller.rb
class SessionsController < ApplicationController
def save_signup_history(member_id)
SignupHistory.create(
member_id: member_id,
ip: request.ip,
accept_language: request.headers["Accept-Language"],
ua: request.headers["User-Agent"],
login_location: request.location
)
end
end
数据库属性
但是,我在数据库中得到的不是login_location: request.location
将登录 IP 的位置写入数据库的行,而是:New York
--- !ruby/object:Geocoder::Result::Ipstack data: ip: 127.0.0.1 country_name: Reserved country_code: RD cache_hit:
如何根据登录到我的数据库的 IP 保存位置