我正在编写一个函数来在用户登录或注销时执行某些操作。在我的模型中使用after_save回调,这就是我现在的做法:
after_save :send_message
def send_message
#how to send message based on log in/out?
end
当用户登录/注销或更新帐户等时,会调用after_save。
如何仅在用户登录时触发此send_message?同样,只有当用户退出时?
答案 0 :(得分:0)
在您的模型中,在回调后添加以下代码
skip_callback :create, :before, : send_message, if: :skip_some_callbacks
然后在你的控制器中,将skip_some_callbacks设置为false
def login
...
user.skip_some_callbacks = false
end
答案 1 :(得分:0)
我的模型
中的回调
您找错了地方 - 您需要在调用相关的控制器方法后执行此操作。
我知道你没有使用Devise
;如果你是,它有会话控制器creates
和destroys
会话(用户logs in
和logs out
时的IE)。
您可以为这些方法创建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