设计不调用覆盖函数 - 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 对象。
我试图在用户注册或登录他们的帐户后在会话变量中存储权限列表。以下代码仅在用户登录到当前保存的帐户时有效。通过注册创建帐户时,我需要覆盖什么方法来保存权限?
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 对象。