Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Desive不调用重写函数-Ruby on Rails_Ruby On Rails_Ruby_Devise - Fatal编程技术网

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

Ruby on rails Desive不调用重写函数-Ruby on Rails,ruby-on-rails,ruby,devise,Ruby On Rails,Ruby,Devise,我试图在用户注册或登录到其帐户后,在会话变量中存储权限列表。以下代码仅在用户登录到当前保存的帐户时有效。通过注册创建帐户时,我需要覆盖哪些方法来保存权限 class UserSessionsController < Devise::SessionsController after_action :after_login, :only => :create def after_login session[:permissions] = current_user.

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

class UserSessionsController < Devise::SessionsController

  after_action :after_login, :only => :create

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


end
class-usersessioncontroller:create
登录后的def
会话[:权限]=当前用户列表权限
结束
结束
类用户::注册控制器<设计::注册控制器
操作之后:注册之后,:only=>:create
注册后的def
##您的数据权限
结束
可能需要通过资源进行注入。在这种情况下,请尝试(我很快就把它注释掉,以防您想知道发生了什么):

类用户::注册控制器<设计::注册控制器
def创建
##获取注册数据
超级do |资源|
##检查数据是否有效
如果参数[:您的_数据]
##将资源设置为数据
resource.your_data=params[:your_data]
##检查(如有必要)要键入的数据
如果resource.you==2
##省省吧
resource.save_和_您的_数据
##使用标准设置保存
其他的
资源节约
结束
结束
结束
结束
结束
通过注册创建帐户时,我需要覆盖哪些方法来保存权限

class UserSessionsController < Devise::SessionsController

  after_action :after_login, :only => :create

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


end

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

我能够使用after_sign up def来解决问题。谢谢
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