Поиск по номеру телефона, но с последними 4 цифрами в Rails

#ruby-on-rails #ruby-on-rails-3

#ruby-on-rails #ruby-on-rails-3

Вопрос:

Это мой метод

 def phone_number_last_4
   phone_number = self.work_phone
   phone_number[phone_number.length - 4 ,4]
end
  

и мое имя поля work_phone

Например: мой рабочий телефон: 1234567890 — так что мой номер телефона_last_4 равен 7890

Я хочу, чтобы клиент указал цифру phone_number_last_4, но это не поле, так как я могу выполнить поиск, в котором номер phone_number включает 7890.

Имя моей таблицы: Customer

итак, Customer.where(«work_phone = ?», 1234567890) — это работает, но

Customer.where(«phone_number_last_4 = ?», 1234567890) не работает

Помогите мне, пожалуйста

Комментарии:

1. Вам было бы лучше использовать WHERE ... LIKE '%xxxx' , чем хранить вторую копию последних четырех цифр.

Ответ №1:

 Customer.where("work_phone ~ '7890$'")
  

Предполагается, что вы используете Postgresql.

Ответ №2:

Отдельно от вопроса, вы можете сделать phone_number[-4, -1] , чтобы получить последние четыре символа строки в ruby.

Предполагая, что вы используете mysql, вы можете выполнить аналогичный запрос подстроки на основе последних четырех цифр в work_phone поле: Customer.where("SUBSTRING(work_phone, -4) = ?", '7890')