如何在模型中使用变量请求?

时间:2015-06-16 13:55:51

标签: ruby-on-rails model-view-controller

我有一个名为Session的模型,其中我需要保存一列用户IP。但是,模型无法看到变量“request”。

goToSleepFor:

在不破坏MVC模式的情况下,最优雅的方法是什么来解决这个问题?

2 个答案:

答案 0 :(得分:1)

从控制器中传递出来:

class Session < ActiveRecord::Base

  def initialize(ip)
    @ip = ip
  end

end

class SomeController
  def new_session
    Session.new(request.remote_ip)
    Session.save
  end
end

我在这里使用了initialize方法,但如果对您的用例更方便的话,您可以将其传递给现有方法。

答案 1 :(得分:0)

在您的控制器中

class YourController < ApplicationController

    def your_action
      Session.do_something(session_params) # do_something can be .new, .update, etc. depending on your action
    end

    private
    def session_params
          p = params.require(:session).permit(
            :your_stuff,
            ...
          )
          p[:ip] = request.remote_ip
    end

end

然后在您的模型/数据库中,您只需定义一个列/字段ip