2013-07-06 27 views
0

我有一個帶有「ip」屬性的用戶模型。我想在用戶模型中註冊時保存用戶的IP地址。如何在Ruby on Rails中註冊時記錄用戶的IP地址?

唯一的問題是,它似乎當我使用戶模型的方法,如:

def set_ip 
    self.ip = request.remote_ip 
end 

我得到一個錯誤信息說「請求」不存在的,所以它看起來並不像它存在於模型中。

有什麼辦法可以在模型中設置IP地址,還是我必須在控制器中執行此操作?

回答

3

request是一個controller method所以你不能從模型中調用它。爲什麼不在創建用戶之前將IP添加到params?就像這樣:

params[:user][:ip] = request.ip 
@user = User.create(params[:user]) 
+0

好的,這是有道理的。謝謝。 – MichaelHajuddah

+0

我是Rails的新手。感謝你的回答。我想知道這種類型的代碼在模型中是否會更好地保持MVC風格? – ethicalhack3r

+0

@ ethicalhack3r(1)這是爲模型準備數據,即控制器的工作。 (2)該模型無論如何都無法訪問「請求」。 –