Můžete také přímo použít IN spolu s json_array_elements:
Recipe.where("'405' IN (SELECT json_array_elements(data->'category_ids')::text)")
A pokud je váš sloupec sloupcem jsonb, můžete to udělat podobně:
Recipe.where("'405' IN (SELECT jsonb_array_elements(data->'category_ids')::text)")