обновление атрибута базы данных на основе вычисленной логики - PullRequest
0 голосов
/ 12 сентября 2018

Вот что я готов сделать:

  • .. сохранить в базе данных (таблица signup_history) значение в созданном_атайле + время ожидания сеанса, определенное с помощью ENV ['SESSION_EXPIRE']
  • .. затем, когда пользователь выходит из системы (например, в действии SessionsController # destroy), переопределите столбец session_end с помощью current_time (т.е. Time.now)

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

...