根据一些计算出的逻辑更新数据库属性

时间:2018-09-12 14:31:12

标签: ruby-on-rails ruby ruby-on-rails-4

这就是我愿意做的事情:

  • ..将ENV ['SESSION_EXPIRE']中定义的created_at +会话超时内的值保存到数据库(signup_history的表)中
  • ..然后,当用户退出时(即在SessionsController#destroy操作中),用current_time(即Time.now)覆盖session_end列

SessionsController#destroy

def destroy
  clear_all_sessions current_user.id
  reset_session
  redirect_to root_path
end


def save_signup_history(member_id)
  SignupHistory.create(
    member_id: member_id,
    email_id: @member.email,
    ip: request.remote_ip, # Useful for Remote IP
    accept_language: request.headers["Accept-Language"],
    ua: request.headers["User-Agent"],
    login_location: get_ip_location(request.remote_ip), # returns remote login location
  )
end

这是我做过的,但是对我的逻辑感到困惑

def session_end_method
  if session.destroy
    Time.now
  else
    SignupHistory.created_at + ENV['SESSION_EXPIRE']
  end
end

def update_signup_history
  SignupHistory.update(
    session_end: session_end_method # call the method that is doing the logic so the value can be updated into the cell.
  )
end

但这是行不通的,我可以同意这不是一个可靠的解决方案。有人可以帮帮我吗?我要做的就是根据我的解释更新数据库中的session_end列。

从下图可以看到,session_end不会在数据库中保存任何内容。

session_end

0 个答案:

没有答案