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 に答える