Как выбрать IN массив строк, используя предложение where - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь выполнить поиск, используя массив строк в предложении where.

Массив создается путем разбиения строки, содержащейся в param [: q] [: genres_name_cont] следующим образом:

params[:q][:genrearray] = params[:q][:genres_name_cont].split

Например, если в поле жанра введено 'Rock Blues', 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 ') '

Заранее спасибо всем, кто может помочь.

...