14

我有这样的代码:

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

如您所见,它正在跨多个字段执行搜索。

有没有办法避免重复的 t?这让我觉得很脏。

谢谢

4

2 回答 2

29

您可以使用命名占位符来执行此操作:

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

这通常是在查询中多次重复奇异值的最佳方式。

于 2013-01-25T16:49:59.733 回答
1
t = "%#{term}%"
where('name || email || postcode like ?', t)
于 2013-01-25T16:49:40.537 回答