问题
I have code like this:
t = "%#{term}%"
where('name like ? or email like ? or postcode like ?', t, t, t)
As you can see it's performing a search across several fields.
Is there a way to avoid the duplicated t? It's making me feel dirty.
Thanks
回答1:
You can do it with a named placeholder:
where('name LIKE :name OR email LIKE :name OR postcode LIKE :name', :name => t)
This is often the best way to repeat a singular value several times in a query.
回答2:
t = "%#{term}%"
where('name || email || postcode like ?', t)
来源:https://stackoverflow.com/questions/14526389/is-there-a-dry-way-to-pass-bind-variables-to-an-ar-relation