Tento výraz:
to_tsvector('simple', (COALESCE(title::TEXT), ''))
není proměnlivý vůči vašemu indexu.
Index byste měli deklarovat přesně na tom výrazu, který je použit v dotazu:
CREATE INDEX products_gin_title
ON products
USING GIN(to_tsvector('simple', COALESCE(title::TEXT,'')))
(nebo nechte ruby vygenerovat výraz, který je použit v indexu).
Pokud chcete, aby bylo indexováno více sloupců, stačí je zřetězit:
CREATE INDEX products_gin_title
ON products
USING GIN(to_tsvector('simple', title || ' ' || product_type || ' ' || platform_id))
ale znovu, Ruby by měla filtrovat přesně stejný výraz, aby byl index užitečný.