Существует ли СУХОЙ способ передачи переменных связывания в AR-связь?

У меня есть такой код:

t = "%#{term}%"
where('name like ? or email like ? or postcode like ?', t, t, t)

Как вы можете видеть, он выполняет поиск по нескольким полям.

Есть ли способ избежать дублирования т? Это заставляет меня чувствовать себя грязным.

Спасибо

2 ответа

Решение

Вы можете сделать это с указанным заполнителем:

where('name LIKE :name OR email LIKE :name OR postcode LIKE :name', :name => t)

Часто это лучший способ повторить единственное значение в запросе несколько раз.

t = "%#{term}%"
where('name || email || postcode like ?', t)
Другие вопросы по тегам