2012-06-18 109 views
0

我必須爲我的用戶稱爲屬性:last_request_at,:空=>假的Rails 3 +設計:設置用戶日期時間註冊

我需要這個屬性設置爲當前時間註冊/創建。但我不知道如何?

註冊表單中的隱藏字段可能是?如果是,那將是怎樣的?或者,Devise如何在註冊/創建時將當前時間的可跟蹤屬性設置爲當前時間?

編輯

我把這個用戶模型:

before_save :set_last_request 

def set_last_request 
    self.update_attribute(:last_request_at, Time.now) 
end 

但後來我得到:

stack level too deep 

回答

2

我會在控制器操作中設置屬性。您的堆棧級別過深錯誤是因爲update_attribute最後調用save。你無限地撥打set_last_request

我只會在你的控制器操作中調用@record.last_request_at = Time.now,或修改你的before_save鉤子來做self.last_request_at = Time.now

+0

然後我得到了未定義的方法'before_save'for 2012-06-18 18:51:29 +0200:時間 – Mexxer

+0

或者你通過修改before_save鉤子是什麼意思? – Mexxer

+1

我的意思是改變before_save調用的方法來執行'self.last_request_at = Time.now'而不是'update_attribute'調用。 – davidcelis

0

看看在Trackable模塊:

跟蹤登錄計數,時間戳和IP地址。

+0

我知道這個模塊...但我specificially需要設置我的屬性:last_request_at,因爲它的另一功能 – Mexxer

+0

重要的可跟蹤模塊節省了用戶記錄,這樣你可以簡單地設置'last_request_at = current_sign_in_at'在用戶的'before_save鉤子。否則,你可以註冊你自己的[warden hook](https://github.com/hassox/warden/wiki/callbacks)。 – Stefan

+0

我編輯了我的問題。出錯了 – Mexxer