ruby-on-rails - 如何解析电子邮件或电话号码参数?

标签 ruby-on-rails ruby ruby-on-rails-4

参数 email_or_phone_number 来自客户端,我需要它来进行身份验证。但是,该模型分别具有电子邮件电话号码字段。

解析 email_or_phone_number 属性的正确方法是什么,以便我可以使用 find_by 查找用户?

find_by(email: email, phone_number: phone_number)

如果是号码,那么它应该变成 phone_number,但如果不是,那么它应该是 email

最佳答案

对于您的问题,一个简单易读的解决方案是使用OR 查询

Mongoid

User.where(email: params[:email_or_phone_number])
    .or(phone_number: params[:email_or_phone_number])
    .first

更新事件记录

User.where(email: params[:email_or_phone_number])
    .or(User.where(phone_number: params[:email_or_phone_number]))

另一种方法是使用正则表达式来识别 Email FormatPhone Number Format params[:email_or_phone_number] 中的值,但我还没有遇到任何在识别那里格式的情况下的完整证据。

关于ruby-on-rails - 如何解析电子邮件或电话号码参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42314452/

相关文章:

ruby-on-rails - Rails 服务器和 Rails 控制台因 : require': cannot load such file -- rack/protection (LoadError) 崩溃

ruby-on-rails - 在 Ruby on Rails 模型对象上执行 map 方法

ruby - 如何从标签中获取 "href"

jquery - 如何在 Rails Helper 中编写 JQuery

ruby-on-rails - 是否可以在单独的 require 语句中包含 Rails actionpack?

ruby-on-rails - Rails time_select 中的有效范围

没有变量的 Ruby 1.9 block

ruby - 创建Redis集群时出现Err : Node 127. 0.0.1:6379未配置为集群节点

ruby-on-rails - 如何将 polymer (1.0)与Rails(4)一起使用?

mysql - Rails 4 相当于 SQL "select count"?