gpt4 book ai didi

ruby-on-rails - 将电话号码添加到用户模型

转载 作者:数据小太阳 更新时间:2023-10-29 07:33:44 24 4
gpt4 key购买 nike

如果这个问题太笼统,我们深表歉意。总的来说,我对 Rails 和开发还比较陌生。我正在创建一个使用 Twilio 进行短信验证的 Rails 应用程序。用户使用他们的姓名和电话号码注册该应用程序。然后通过短信发送的 PIN 码验证该电话号码。我很难弄清楚使用 phone_number 模型然后使用 belongs_to: 和 has_one: 在用户和 phone_numbers 之间创建关联是否会更容易和/或更好,或者我是否可以使电话号码成为用户的一部分模型。

我正在使用 Rails 4.2.1

这是我的用户模型:

class User < ActiveRecord::Base
has_secure_password

validates_presence_of :name
validates_presence_of :phone_number
validates_uniqueness_of :phone_number
end

用户 Controller :

class UsersController < ApplicationController

def new
@user = User.new
end

def create
@user = User.new(user_params)
if @user.save
session[:user_id] = @user.id
redirect_to root_url, notice: "Saved"
else
render 'new'
end
end

private

def user_params
params.require(:user).permit(:name, :phone_number, :password, :password_confirmation)
end

end

这是我一直试图遵循的 Twilio 教程:

http://twilioinc.wpengine.com/2015/06/sms-phone-verification-in-rails-4-using-ajax-and-twilio.html

我是不是想多了?用户真的只是一个带名字的电话号码吗?

如果我不得不创建一个电话号码模型/ Controller ,我将如何修改我的路线?这将如何改变我的注册页面,现在包括:

  <div class="field">
<%= f.label :phone_number %><br />
<%= f.text_field :phone_number %>
</div>

最佳答案

您可以将 phone_number 模型作为用户的一部分,只需使用 [:user][:phone_number] 参数来创建它。这完全取决于您以及您要构建的用户体验类型。

用户在注册时是否需要验证他/她的电话号码?用户是否必须在创建帐户后执行此操作?

在第一种情况下,您可以将电话号码设为属于用户的单独模型。您将 Twilio 集成的所有方法放在 phone_number 模型中,并在 users_controller 中使用它们。您可以通过避免 AJAX 并将其作为用户注册的下一步来简化验证步骤。

它可能是这样的:

在你的模型中:

    class PhoneNumber < ActiveRecord::Base
belongs_to :user
...
end

在你的用户 Controller 中:

 def create
@user = User.new(permitted_params)
@phone_number = PhoneNumber.find_or_create_by(user_id: @user.id ,phone_number: params[:user][:phone_number])
@phone_number.generate_pin
@phone_number.send_pin
...
end

关于ruby-on-rails - 将电话号码添加到用户模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32129608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com