Вот что я готов сделать:
- .. сохранить в базе данных (таблица 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 не сохраняет что-либо в базе данных.