如何在用Devise注册后要求用户创建个人资料? 我正在考虑使用Wicked Wizard gem,但是用户可以跳过所有步骤并访问该网站。
用户必须先设置个人资料,然后他们才能访问网站。
我在考虑这个实现:
SomeController.rb
before_action :authenticate_user!
before_action :check_if_profile_created?
private
def check_if_profile_created?
current_user.profile
end
end
但是这个解决方案会对用户提出的所有请求进行检查,我认为这样做并不好。有没有其他方法可以做到这一点?或者如何使用Wicked Wizard gem实现它?我还没有找到如何将它从所有页面重定向到向导中的当前步骤。
答案 0 :(得分:0)
如果没有对每个请求进行验证,就无法做到这一点,因为无论您输入什么页面,都必须确保填写个人资料。
也许您可以使用before操作将该验证添加到应用程序控制器,这样您就不必在每个控制器中执行此操作。并且只验证用户是否已登录以及user.profile ...
答案 1 :(得分:0)
你的意思是丑陋的?如果这是“代码将在任何地方重复”的问题,那么您可以创建一个继承自ActionController的控制器,并将before_action
添加到该控制器,指定需要填充配置文件。或者你可以创建一个你可以随便进入的关注点
class SomethingController < ApplicationController
before_action :ensure_profile_filled
def ensure_profile_filled
redirect_to 'wherever'
end
end
class ChildController < SomethingController
end
还有route constraints但我想你想在控制器层上做这件事。