我目前有一个rails项目,可以让客户以两种不同的方式验证他们的帐户。他们可以使用他们存储在数据库中的条形码,也可以使用电话号码。我想合并这两个字段,以便有一个字段允许两个身份验证源。这是我的两个字段的代码。
def User.authenticate(barcode)
if user = find_by_barcode(barcode)
user
end
end
def User.authenticate2(phone_number)
if user = find_by_phone_number(phone_number)
user
end
end
任何建议都将不胜感激。
答案 0 :(得分:2)
我建议使用这个来简化代码:
def User.authenticate(barcode_or_phone_number)
find_by_barcode(barcode_or_phone_number) || find_by_phone_number(barcode_or_phone_number)
end
但是它可能会导致查询2个sql。所以你可以考虑这个:
def User.authenticate(barcode_or_phone_number)
where("users.barcode = ? OR users.phone_number = ?", barcode_or_phone_number, barcode_or_phone_number).first
end