如何使用where子句选择IN字符串数组

时间:2019-01-09 13:13:03

标签: ruby-on-rails ruby rails-activerecord

我试图在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')'

在此先感谢任何可以提供帮助的人。

0 个答案:

没有答案