我知道我可以使用“for”或“each”循环执行此操作,并将结果限制为20个最近的用户,但最适合用于确定用户如何被识别为最近/活动的数据?
也许每次用户发送邮件时都会更新一个updated_at列? 每次用户登录时都会更新会话?
不太确定最好的方法是做什么..也许在发送消息时更新users表中的updated_at列,留下评论..不太确定最好的方法是什么。< / p>
让用户在主页上放置小盒子的图片看起来不错,但我不知道一旦我启动它会对我的服务器造成什么影响。
我记得twitter做了这件事,不久之后他们从主页上删除了这个功能。
无论如何,提前谢谢。
亲切的问候。
答案 0 :(得分:3)
只需使用:touch => true
(documentation)。我认为这是一个很好的方法。
class Message < ActiveRecord::Base
belongs_to :user, :touch => true
end
答案 1 :(得分:0)
一致的方法是在登录时更新lastseen(时间戳)列(用户talbe)。当会话超时时,您再次更新。通过排序“lastseen desc”和限制,您可以轻松地获取最近的列表。
答案 2 :(得分:0)
在ApplicationController
中创建一个空会话。
当用户登录时,使用哈希将user_id和时间保存为之前创建的会话中的lasttimeseen。
在ApplicationController
中创建一个before_filter,以确保更新lastimeseen。
我们的想法是拥有一个包含所有已登录用户的唯一会话以及执行最后一次操作的时间。
完成此操作后,您可以获取最近20位最近的用户。