在我的Rails应用程序中,我想记录一个user
为last_seen
的时间。如何在Rails应用程序中记录上次活动的时间?
现在,我这样做,因为在我的SessionsHelper
如下:
def sign_in(user)
.....
user.update_column(:last_seen, Time.zone.now)
self.current_user = user
end
但是,这不是很精确,因为用户可能会在上午8点和晚上的last_seen
数据库列登录仍将包含时间。
所以我想只要用户采取动作来更新last_seen
:
class ApplicationController
before_filter :update_last_seen
private
def update_last_seen
current_user.last_seen = Time.zone.now
current_user.save
end
end
但我不喜欢这种做法是因为数据库中获取并在每一个用户采取措施打击。
那么有什么可能是更好的选择呢?
+1:听起来像是过早优化 –
好,很好。不知道。但是在文档中它说'touch'更新数据库中的'updated_at'字段。如果我想更新另一个字段,比如说'last_seen'字段怎么办?我上面发布的代码会比'touch'方法慢吗?我假设这两种方法都会以某种方式触及数据库。 – Tintin81
@ Tintin81你应该仔细看看那个文档。 http://apidock.com/rails/ActiveRecord/Persistence/touch – coreyward