设计不调用覆盖函数 - Ruby on Rails

Devise not calling overridden function - Ruby on Rails

我试图在用户注册或登录他们的帐户后在会话变量中存储权限列表。以下代码仅在用户登录到当前保存的帐户时有效。通过注册创建帐户时,我需要覆盖什么方法来保存权限?

class UserSessionsController < Devise::SessionsController

  after_action :after_login, :only => :create

  def after_login
      session[:permissions] = current_user.list_permissions
  end


end
class Users::RegistrationsController < Devise::RegistrationsController

 after_action :after_signup, :only => :create

  def after_signup
   ## your data permissions
end

可能需要通过资源注入。在这种情况下尝试(我很快就把它注释掉了,以防万一你想知道发生了什么):

class Users::RegistrationsController < Devise::RegistrationsController


  def create
## GET THE SIGN UP DATA
    super do |resource|
##CHECK IF DATA IS VALID
      if params[:your_data]
##SET THE RESOURCE TO THE DATA
        resource.your_data = params[:your_data]
##CHECK (IF NECESSARY) DATA TO TYPE
        if resource.you == 2
## SAVE IT
          resource.save_with_your_data
## SAVE WITH STANDARD SETTINGS
        else
          resource.save
        end
      end
    end
  end
end

What method do I need to override to save the permissions when the account is created via sign up?

您似乎想在创建用户时将此信息存储在数据库中。记住 current_user 会给你对象中的整个数据库记录,然后你可以用它做任何你想做的事。我不建议直接打乱会话,而是使用 Devise 提供的 current_user 对象。