Esta expressão:
to_tsvector('simple', (COALESCE(title::TEXT), ''))
não é sargável em relação ao seu índice.
Você deve declarar o índice exatamente na expressão usada na consulta:
CREATE INDEX products_gin_title
ON products
USING GIN(to_tsvector('simple', COALESCE(title::TEXT,'')))
(ou faça ruby gerar a expressão que é usada no índice).
Se você quiser que várias colunas sejam indexadas, basta concatená-las:
CREATE INDEX products_gin_title
ON products
USING GIN(to_tsvector('simple', title || ' ' || product_type || ' ' || platform_id))
mas, novamente, Ruby deve estar filtrando exatamente a mesma expressão para que o índice seja útil.