是否存在将绑定变量传递给AR关系的DRY方法?

sup*_*ary 11 ruby-on-rails active-relation rails-activerecord

我有这样的代码:

t = "%#{term}%"
where('name like ? or email like ? or postcode like ?', t, t, t)
Run Code Online (Sandbox Code Playgroud)

正如您所看到的那样,它正在跨多个领域进行搜索.

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

谢谢

tad*_*man 22

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

where('name LIKE :name OR email LIKE :name OR postcode LIKE :name', :name => t)
Run Code Online (Sandbox Code Playgroud)

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