Я пытаюсь выполнить поиск, используя массив строк в предложении 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 ') '
Заранее спасибо всем, кто может помочь.