如何在Arel和Rails中进行LIKE查询?

我想做类似的事情:


SELECT * FROM USER WHERE NAME LIKE '%Smith%';

我在Arel中的尝试:


# params[:query] = 'Smith'

User.where("name like '%?%'", params[:query]).to_sql

但是,这变为:


SELECT * FROM USER WHERE NAME LIKE '%'Smith'%';

Arel正确包装了查询字符串'Smith',但是因为这是LIKE语句,所以它不起作用。


如何在Arel中进行LIKE查询?


PS奖金-我实际上是尝试扫描表上的两个字段,包括名称和描述,以查看查询是否匹配。那将如何工作?


杨魅力
浏览 613回答 3
3回答

精慕HU

这是您在arel中执行类似查询的方式:users = User.arel_tableUser.where(users[:name].matches("%#{user_name}%"))PS:users = User.arel_tablequery_string = "%#{params[query]}%"param_matches_string =  ->(param){   users[param].matches(query_string) } User.where(param_matches_string.(:name)\                       .or(param_matches_string.(:description)))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Ruby