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