Rails在sign_up之后需要用户的配置文件设置

时间:2018-06-07 18:19:54

标签: ruby-on-rails devise

如何在用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实现它?我还没有找到如何将它从所有页面重定向到向导中的当前步骤。

2 个答案:

答案 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但我想你想在控制器层上做这件事。