0

私は現在、顧客が 2 つの異なる方法でアカウントを認証できるようにする Rails プロジェクトを持っています。データベースに保存されているバーコードを使用するか、電話番号を使用できます。これら 2 つのフィールドをマージして、2 つの認証ソースを許可する 1 つのフィールドを作成したいと考えています。これが2つのフィールドの私のコードです。

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 に答える