我有一个名为Session的模型,其中我需要保存一列用户IP。但是,模型无法看到变量“request”。
goToSleepFor:
在不破坏MVC模式的情况下,最优雅的方法是什么来解决这个问题?
答案 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