Del buen manual :
Los tres tipos de los que hablan son char(n) , varchar(n) y text . El consejo esencialmente dice que:
char(n)es el más lento debido al relleno en blanco y al hecho de tener que verificar la restricción de longitud.varchar(n)generalmente está en el medio porque se debe verificar la restricción de longitud.text(También conocido comovarcharsinn) suele ser el más rápido porque no hay sobrecarga adicional.
Aparte del relleno en blanco para char(n) y comprobación de longitud para char(n) y varchar(n) , todos se manejan de la misma manera entre bastidores.
Con ActiveRecord, t.string es un varchar y t.text es text . Si no tiene restricciones de longitud estrictas en sus cadenas, simplemente use t.text con PostgreSQL.