2014-11-14 3 views
0

Я сэкономить время входа в систему, когда сеанс уничтожаетсяметод Authlogic когда logout_on_timout или отправить действие от сессии

UserSessionsController (контроллер)

def destroy 
     connectime = (Time.now - current_user.current_login_at).to_i 
     current_user.logtime(connectime) 
     current_user_session.destroy 
     redirect_to new_user_session_url 
    end 

пользователя (модель)

def logtime(connectime) 
     self.log_duration ||= 0 
     self.log_duration += connectime 
     self.save 
    end 

Это нормально, когда пользователь выходит из системы, но не работает для logout_on_timeout

Где я могу позвонить методу, когда пользователь вышел из системы после таймаута, чтобы сохранить это время связи?

[Edit] Другой способ я смотрю, чтобы отправить некоторый метод, когда persistence_token изменяются с after_persisting, но не может получить доступ к current_user в модели.

Проблема заключается в том, чтобы найти нужное место для отправки инструкции от контроллера (сеанса или пользователя), когда пользователь делает какие-либо действия на сервере.

ответ

0

Я нахожу решение через application_controller. Боюсь, что многократный вызов замедлять сервер, но не знаю, как сделать это лучше ...

добавить столбец log_total_duration Когда пользователь взаимодействует с сервером его называют этот before_filter хранить раз пользователь регистрируется (log_duration)

def set_time 
    if current_user 
     @user = User.where(:id => current_user).first 
     @user.log_duration = (@user.last_request_at - @user.current_login_at).to_i 
     @user.save 
    end 
    end 

Когда вход пользователя в системе я использую в методе создания на UserSessionController. Он добавить log_duration к log_duration_total

def create 
     @user_session = UserSession.new(params[:user_session])  
     if @user_session.save   
     current_user = UserSession.find.user 
     current_user.logtime 

в модели пользователя

def logtime 
     self.log_duration_total ||= 0 
     self.log_duration_total += log_duration 
     self.save 
    end