Есть ли сухой способ передать переменные привязки в отношение AR?


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

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

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

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

Спасибо

2 9

2 ответа:

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

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

Это часто лучший способ повторить сингулярное значение несколько раз в запросе.

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