我试图在where子句中使用字符串数组进行搜索。
通过拆分包含在 param [:q] [:genres_name_cont] 中的字符串来生成数组,如下所示:
params[:q][:genrearray] = params[:q][:genres_name_cont].split
例如,如果在体裁字段中输入了“摇滚蓝调”,则 params [:q] [:genrearray] = [“ Rock”,“ Blues”] 。
给我数组,然后在where子句中使用该数组:
@bands = Band.joins(:genres).where("genres.name IN (?)", params[:q][:genrearray])
但是,生成的SQL似乎并没有像我期望的那样在数组中搜索:
SELECT DISTINCT "bands".* FROM "bands" LEFT OUTER JOIN "bands_genres" ON "bands_genres"."band_id" = "bands"."id" LEFT OUTER JOIN "genres" ON "genres"."id" = "bands_genres"."genre_id" WHERE "genres"."name" ILIKE '%Rock Blues%'
我希望看到的不是' ILIKE'%Rock Blues%''之类的东西,而不是' IN('Rock','Blues')'>
在此先感谢任何可以提供帮助的人。