当我在我的管理界面中时,我想查看哪些用户已登录。
像这样
使用设计,我添加了可跟踪功能
在我的迁移中
t.integer :sign_in_count, :default => 0
t.datetime :current_sign_in_at
t.datetime :last_sign_in_at
t.string :current_sign_in_ip
t.string :last_sign_in_ip
问题是,如果用户退出:current_sign_in_at
并且:current_sign_in_ip
未设置为零。
我将此添加到我的 sessions_controller.rb
def destroy
current_user.current_sign_in_at = nil
current_user.save
signed_out = (Devise.sign_out_all_scopes ? sign_out : sign_out(current_user))
set_flash_message :notice, :signed_out if signed_out
redirect_to root_url
end
现在,current_sign_in_at
当用户退出时更新。
然后我添加了:timeoutable
mpdule。当会话超时时,current_sign_in_at
不更新。
在所有这些黑客攻击之后,我开始怀疑:难道没有设计一种更优雅的方式来做到这一点吗?