ruby-on-rails - 如何记录用户使用 Devise 和 Ruby on Rails 注册的 IP 地址?

标签 ruby-on-rails devise

我尝试了以下方法:

user.rb中:

before_create :record_sign_up_ip

protected
def record_sign_up_ip
  self.sign_up_ip = current_sign_in_ip
end

不幸的是,虽然 current_sign_in_ip 的本地 IP 正确为 127.0.0.1,但 sign_up_ip 仍为 nil。如何轻松获取注册人的IP?通常我会将其放在 create Controller 中,但是使用 Devise,没有用于 User 的 Controller 。

最佳答案

覆盖 Devise 使用的 Controller ,如 Override devise registrations controller 中所述。

根据该帖子的修改,创建 app/controllers/users/registrations_controller.rb:

# app/controllers/users/registrations_controller.rb
class Users::RegistrationsController < Devise::RegistrationsController

  def create
    params['user']['sign_up_ip'] = request.env['REMOTE_ADDR']   
    super
  end

end 

还对该帖子进行了修改,以使用该 Controller :

# app/config/routes.rb
devise_for :users, :controllers => {:registrations => "users/registrations"}

您还需要使sign_up_up可访问(对于Rails 3):

# app/models/user.rb
  attr_accessible :sign_up_ip

关于ruby-on-rails - 如何记录用户使用 Devise 和 Ruby on Rails 注册的 IP 地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21274630/

相关文章:

ruby-on-rails - 如何在 form_helper 中强制输入字段的 ID?

ruby-on-rails - 添加字段以设计用户注册

ruby-on-rails-3.1 - Rails 3.1,devise gem,:timeoutable is not working, 为什么?

ruby-on-rails - 带有设计的购物车 - session_id 在登录后发生变化

ruby-on-rails - :has_many through association 中的多个条目

ruby-on-rails - Kaminari和Elasticsearch NoMethodError Rails

ruby-on-rails - jira-ruby gem 限制返回问题的数量?

ruby-on-rails - CanCan-如何允许用户仅更新和删除自己的对象

ruby-on-rails - Ruby:批量加载对象如何提高内存使用率?

ruby-on-rails - 如何解决 rails 插件上的 rake 任务弃用问题?