0

我目前有一个 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

任何建议将不胜感激。

4

1 回答 1

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
于 2012-05-17T12:04:45.017 回答