加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 为用户模型添加电话号码

发布时间:2020-12-17 02:24:35 所属栏目:百科 来源:网络整理
导读:如果这个问题过于笼统,请道歉.我对Rails和一般的开发都比较陌生.我正在创建一个使用Twilio进行SMS验证的Rails应用程序.用户使用他们的姓名和电话号码注册应用程序.然后通过SMS发送的引脚验证该电话号码.我很难确定使用phone_number模型是否更容易和/或更好,
如果这个问题过于笼统,请道歉.我对Rails和一般的开发都比较陌生.我正在创建一个使用Twilio进行SMS验证的Rails应用程序.用户使用他们的姓名和电话号码注册应用程序.然后通过SMS发送的引脚验证该电话号码.我很难确定使用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

用户控制器:

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

我是否想过这个?用户真的只是一个名字的phone_number吗?

如果我最终需要创建一个电话号码模型/控制器,我将如何修改我的路线?这将如何改变我的注册页面,现在包括:

<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

在您的用户控制器中:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读