我正在使用Warden的回调将某些数据保存到Cookie中。 这就是我所拥有的:
//This is in devise.rb
Warden::Manager.after_authentication do |user, auth, opts|
auth.cookies[:signed_in] = 1
auth.cookies[:user_role] = user.role
end
问题是当用户第一次在我的网络应用程序中注册时,不会调用此回调。因此,我无法将某些数据保存到cookie,并且我的Web应用程序无法以正确的方式运行。
我需要在用户模型中制作一个自定义函数,如下所示,以便在用户创建后触发。
after_commit :after_sign_up, on: :create
def after_sign_up
//need to call below functions over here
//auth.cookies[:signed_in] = 1
//auth.cookies[:user_role] = user.role
end
但是,我不知道如何访问与Warden的回调相同的cookie。有没有办法在模型中访问cookie?如果没有,我应该在控制器中访问?如果是这样,我是否需要在控制器中添加模块才能访问它?详细解释将不胜感激
答案 0 :(得分:2)
我相信Warden::Manager.after_set_user
会做你想要的。在创建用户或登录后调用它。
示例:
Warden::Manager.after_set_user do |user,auth,opts|
# Your code
end