#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')