登录设计后更新属性

Nir*_*hah 7 ruby-on-rails devise ruby-on-rails-3

我在Rails 3应用程序中使用设计.

我想在成功登录后更新用户的某些属性.

我这样做的方式如下:

我在application_controller.rb中添加了以下代码

def after_sign_in_path_for(user)
   @user = current_user
   @user.status = "online"
   @user.save

   root_path
end
Run Code Online (Sandbox Code Playgroud)

是否可以使用不同的方法来执行此操作而不使用用于定义after_sign_in_path的方法?

提前致谢!

Kos*_*aut 3

您可以使用 hooks to warden 来完成此操作。

##config/initializers/devise.rb

Warden::Manager.after_authentication do |user,auth,opts|
  user.update_attribute(:currently_signed_in, true)
end

Warden::Manager.before_logout do |user,auth,opts|
  user.update_attribute(:currently_signed_in, false)
end
Run Code Online (Sandbox Code Playgroud)