tutorial software rails ejemplos descargar curso caracteristicas ruby-on-rails

ruby-on-rails - software - ruby on rails tutorial



¿Diferencia entre cadena y texto en rieles? (7)

Cadena si el tamaño es fijo y pequeño y texto si es variable y grande. Esto es algo importante porque el texto es mucho más grande que las cadenas. Contiene muchos más kilobytes.

Así que para campos pequeños siempre use string (varchar). Campos como first_name, inicio de sesión, correo electrónico, asunto (de un artículo o publicación) y ejemplo de textos: contenido / cuerpo de una publicación o artículo. campos para párrafos, etc.

Tamaño de cadena 1 a 255 (predeterminado = 255)

Tamaño del texto 1 a 4294967296 (predeterminado = 65536) 2

Estoy creando una nueva aplicación web con Rails, y me preguntaba, ¿cuál es la diferencia entre string y text ? ¿Y cuándo deben usarse cada uno?


Como se explicó anteriormente, no solo el tipo de datos db también afectará a la vista que se generará si está en un andamio. La cadena generará un campo de texto. El texto generará un área de texto.


La cadena se traduce como "Varchar" en su base de datos, mientras que el texto se traduce como "texto". Una varchar puede contener muchos menos elementos, un texto puede tener (casi) cualquier longitud.

Para un análisis en profundidad con buenas referencias, visite http://www.pythian.com/news/7129/text-vs-varchar/

Edición: algunos motores de base de datos pueden cargar varchar de una sola vez, pero almacenan texto (y blob) fuera de la tabla. Un SELECT name, amount FROM products podría ser mucho más lento cuando se usa el text para el name que cuando se usa varchar . Y desde Rails, por defecto carga registros con SELECT * FROM... tus columnas de texto serán cargadas. Sin embargo, esto probablemente nunca será un problema real en su aplicación o la mía (la optimización prematura es ...). Pero saber que el texto no siempre es "libre" es bueno saberlo.


La diferencia se basa en cómo el símbolo se convierte en su respectivo tipo de columna en el lenguaje de consulta.

con MySQL: la cadena se asigna a VARCHAR (255) - http://guides.rubyonrails.org/migrations.html

:string | VARCHAR | :limit => 1 to 255 (default = 255) :text | TINYTEXT, TEXT, MEDIUMTEXT, or LONGTEXT2 | :limit => 1 to 4294967296 (default = 65536)

Referencia:

http://www.packtpub.com/article/Working-with-Rails-ActiveRecord-Migrations-Models-Scaffolding-and-Database-Completion

¿Cuándo debe usarse cada uno?

Como regla general, use :string para el ingreso de texto corto (nombre de usuario, correo electrónico, contraseña, títulos, etc.) y use :text para la entrada más esperada, como descripciones, contenido de comentarios, etc.


Si está usando postgres, use el texto siempre que pueda, a menos que tenga una restricción de tamaño, ya que no hay una penalización de rendimiento para el texto frente a varchar

No hay diferencia de rendimiento entre estos tres tipos, aparte del aumento de espacio de almacenamiento cuando se usa el tipo de relleno en blanco, y algunos ciclos de CPU adicionales para verificar la longitud al almacenar en una columna de longitud limitada. Si bien el carácter (n) tiene ventajas de rendimiento en algunos otros sistemas de bases de datos, no existe tal ventaja en PostgreSQL; de hecho, el carácter (n) suele ser el más lento de los tres debido a sus costos de almacenamiento adicionales. En la mayoría de las situaciones, se debe utilizar texto o caracteres que varíen.

PostsgreSQL manual


Si está utilizando Oracle ... STRING se creará como VARCHAR(255) y TEXT , como un CLOB .

NATIVE_DATABASE_TYPES = { primary_key: "NUMBER(38) NOT NULL PRIMARY KEY", string: { name: "VARCHAR2", limit: 255 }, text: { name: "CLOB" }, ntext: { name: "NCLOB" }, integer: { name: "NUMBER", limit: 38 }, float: { name: "BINARY_FLOAT" }, decimal: { name: "DECIMAL" }, datetime: { name: "TIMESTAMP" }, timestamp: { name: "TIMESTAMP" }, timestamptz: { name: "TIMESTAMP WITH TIME ZONE" }, timestampltz: { name: "TIMESTAMP WITH LOCAL TIME ZONE" }, time: { name: "TIMESTAMP" }, date: { name: "DATE" }, binary: { name: "BLOB" }, boolean: { name: "NUMBER", limit: 1 }, raw: { name: "RAW", limit: 2000 }, bigint: { name: "NUMBER", limit: 19 } }

https://github.com/rsim/oracle-enhanced/blob/master/lib/active_record/connection_adapters/oracle_enhanced_adapter.rb


Use la cadena para el campo más corto, como nombres, dirección, teléfono, compañía

Usa texto para contenidos más grandes, comentarios, contenido, párrafos.

Mi regla general, si es algo que es más de una línea, normalmente busco texto, si es una palabra corta de 2 a 6 palabras, busco cadena.

La regla oficial es 255 para una cadena. Por lo tanto, si su cadena tiene más de 255 caracteres, vaya para el texto.