我想做类似的事情: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奖金-我实际上是尝试扫描表上的两个字段,包括名称和描述,以查看查询是否匹配。那将如何工作?
3 回答
精慕HU
TA贡献1845条经验 获得超8个赞
这是您在arel中执行类似查询的方式:
users = User.arel_table
User.where(users[:name].matches("%#{user_name}%"))
PS:
users = User.arel_table
query_string = "%#{params[query]}%"
param_matches_string = ->(param){
users[param].matches(query_string)
}
User.where(param_matches_string.(:name)\
.or(param_matches_string.(:description)))
- 3 回答
- 0 关注
- 658 浏览
添加回答
举报
0/150
提交
取消