ユーザーがログインするときにdbフィールドに「1」を設定し、ログアウトするときに「0」を設定して、オンラインユーザーリストを作成しようとしています。問題は、ユーザーがサイトを離れたばかりの場合でも、「1」はデータベースに残っているため、セッションの有効期限が切れたときに更新することです。
ログイン用:
def create
user = User.find_by_username(params[:username])
if user && user.authenticate(params[:password])
session[:user_id] = user.id
session[:username] = user.username
remote_ip = request.remote_ip
user.update_attributes(:online => 1, :ip => remote_ip)
redirect_to root_url
else
render "new"
end
end
ログアウトの場合:
def destroy
@user = User.where(:id => session[:user_id])
@user.each do |u|
u.update_attributes(:online => 0)
end
session[:user_id] = nil
session[:username] = nil
redirect_to root_url
end
誰かが私にそれを行う方法を提案できますか?