0

我用 Rails 5、Ruby 2.4.0 构建了一个调度应用程序,并希望将 Twillio 用于 SMS Authy(仅用于电话验证)和 Devise 用于用户身份验证。

我的问题是遵循 Twillio 教程Twillio Authy 验证教程我想为此工作流程创建一个自定义设计注册控制器还是创建一个自定义用户控制器来处理这个更好?

由于我的应用程序现在是“所有者”,因此通过帐户创建操作上的嵌套表单创建了一类用户。我只是不确定我是否会通过我的帐户控制器在创建用户上点击用户控制器..?

这是一个垃圾问题,但我真的迷路了,不知道如何继续。

4

1 回答 1

2

将 SMS 验证纳入标准的设计流程似乎是一个绝妙的主意,而不是复制功能。幸运的是它很容易:

class TwillioRegistrationsController < Devise::RegistrationsController

  def create
    super do |user|
      authy = Authy::API.register_user(
        email: user.email,
        cellphone: user.phone_number,
        country_code: user.country_code
      )
      user.update(authy_id: authy.id)
    end
  end

  protected

  def after_sign_up_path_for(resource)
    "users/verify"
  end
end

Devise 让你可以通过让步来“利用”几乎所有控制器方法的流程。Devise::RegistrationsController#create保存后生成资源,这是放置 twillio 逻辑的理想位置。

然后,您需要在设计中允许附加参数并使用附加字段自定义表单。

class ApplicationController < ActionController::Base
  def configure_permitted_parameters
     devise_parameter_sanitizer.permit(:sign_up, keys: [:phone_number, :country_code])
  end
end

请注意,您仍然需要设置一个控制器来处理验证,但您可以按照教程进行操作。

于 2018-04-09T18:05:12.630 回答