我想做類似的事情: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 關注
- 689 瀏覽
添加回答
舉報
0/150
提交
取消