2015-12-16 3 views
0

Я пишу функцию для выполнения некоторых действий, когда пользователь входит в систему или выходит из нее. Использование after_save обратного вызова в моей модели, это то, как я делаю это сейчас:after_save callback: как действовать, только если пользователь зарегистрировался или вышел?

after_save :send_message 


def send_message 

    #how to send message based on log in/out? 

end 

after_save вызывается, когда пользователь входит в систему/из или обновления учетной записи и т.д.

Как я могу запустить этот send_message только тогда, когда пользователь регистрируется? А также, только когда пользователь выходит из системы?

+0

Вы используете изобрести для аутентификации? – Dusht

+0

Я не пользуюсь приложением для проверки подлинности – RPV

+0

Если вы не пользователь Devise, вы должны отслеживать, когда пользователь будет входить в систему и использовать соответствующий обратный вызов для него –

ответ

0

В модели, добавьте ниже код после обратного вызова

skip_callback :create, :before, : send_message, if: :skip_some_callbacks 

затем в контроллере, установить skip_some_callbacks ложному

def login 
    ... 
    user.skip_some_callbacks = false 
end 
+0

моей целью является добавление действий, когда пользователь входит в систему/выходит .. поможет ли вам решение с этим, если я пропускаю обратные вызовы? – RPV

0

обратного вызова в моей модели

Вы ищете неправильный p кружево - вам нужно выполнить это после того, как были вызваны соответствующие контроллеры.

Я знаю, что вы не используете Devise; если бы вы были, у него были сеансы контроллер, который creates и destroys сеансов (IE, когда пользователь logs in и logs out).

Вы были бы в состоянии создать before_action or after_action callback для этих методов:

#app/controllers/sessions_controller.rb 
class SessionsController < ApplicationController 
    after_action :setup, only: [:create, :destroy] 

    def create 
     # logs in -- creates session 
    end 

    def destroy 
     # logs out -- destroys session 
    end 

    private 

    def setup 
     # do something after login/logout 
    end 
end 
Смежные вопросы