将 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
请注意,您仍然需要设置一个控制器来处理验证,但您可以按照教程进行操作。