参数 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 Format或 Phone Number Format params[:email_or_phone_number]
中的值,但我还没有遇到任何在识别那里格式的情况下的完整证据。
关于ruby-on-rails - 如何解析电子邮件或电话号码参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42314452/