Puoi anche usare direttamente IN insieme a json_array_elements:
Recipe.where("'405' IN (SELECT json_array_elements(data->'category_ids')::text)")
E se la tua colonna è una colonna jsonb, puoi fare allo stesso modo:
Recipe.where("'405' IN (SELECT jsonb_array_elements(data->'category_ids')::text)")