代码之家  ›  专栏  ›  技术社区  ›  Cannon Moyer

Desive不调用重写函数-Ruby on Rails

  •  1
  • Cannon Moyer  · 技术社区  · 6 年前

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

    class UserSessionsController < Devise::SessionsController
    
      after_action :after_login, :only => :create
    
      def after_login
          session[:permissions] = current_user.list_permissions
      end
    
    
    end
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Prometheus    6 年前
    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
    
        2
  •  0
  •   Petercopter    6 年前

    通过注册创建帐户时,我需要重写什么方法来保存权限?

    似乎您希望在创建用户时将此信息存储在数据库中。记住这一点 current_user 将为您提供对象中的整个数据库记录,然后您可以对其执行任何需要的操作。我不建议直接打乱会话,而是使用Desive提供的当前\u用户对象。