Нужна помощь в получении доступа для получения remote_ip из модели - PullRequest
0 голосов
/ 30 августа 2018

Привет, я получил существующий проект в модели (пусть вызов в a), который вызывает модель (пусть вызов в b), мне нужно из последней модели, то есть получить ip клиента, проблема в том, что я вроде как связан с ограничениями.

  • способ, которым модель будет добавлена, если из include означает, что она не была передана из контроллера
  • одно из ограничений - внести как можно меньше изменений

Там мой вопрос прост: скажем, мне нужно получить IP не из контроллера, а из модели, и он нигде не сохраняется, так как я могу получить IP.

p.s я пробовал request.remote_ip, но запрос не знал

если возможно, можете показать мне ссылку или пример кода, чтобы я понял, как это сделать.

1 Ответ

0 голосов
/ 30 августа 2018

Вы можете сделать следующее для получения удаленного IP-адреса клиента, это с использованием контроллера.

class TestsController < ApplicationController
  def get_ip
    ip = request.remote_ip
    Test.use_ip(ip)
  end
end

Предположим, у вас есть модель. Я предполагаю это как Test

class Test < ActiveRecord::Base

  def self.use_ip(ip)
    puts ip
  end

end

Согласно вашему требованию, которое противоречит соглашению Rails (что не очень хорошая практика)

определить следующее в application_controller.rb

before_filter :pass_request_around

def pass_request_around
  Thread.current[:request] = request
end

В модели объект запроса теперь должен быть доступен

def get_ip
  request = Thread.current[:request]
  ip = request.remote_ip
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...