ruby on rails - tutorial - Diferença entre string e texto nos trilhos?




ruby on rails tutorial (6)

A diferença depende de como o símbolo é convertido em seu respectivo tipo de coluna na linguagem de consulta.

com o MySQL: string é mapeado para 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)

Referência:

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

Quando cada um deve ser usado?

Como regra geral, use :string para entrada de texto curto (nome de usuário, email, senha, títulos, etc.) e use :text para entrada esperada mais longa, como descrições, conteúdo de comentários, etc.

Eu estou fazendo um novo aplicativo web usando Rails, e queria saber, qual é a diferença entre string e text ? E quando cada um deve ser usado?


Cadeia se o tamanho for fixo e pequeno e texto, se for variável e grande. Isso é importante porque o texto é muito maior que as strings. Ele contém muito mais kilobytes.

Portanto, para campos pequenos, sempre use string (varchar). Campos como. first_name, login, email, subject (de um artigo ou post) e exemplo de textos: content / body de um post ou artigo. campos para parágrafos etc.

Cadeia de tamanho de 1 a 255 (padrão = 255)

Tamanho do texto 1 a 4294967296 (padrão = 65536) 2


Se o atributo estiver combinando f.text_field no formulário use string , se estiver correspondendo f.text_area use text .


Se você estiver usando oracle ... STRING será criado como coluna VARCHAR(255) e TEXT , como 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


String se traduz em "Varchar" em seu banco de dados, enquanto o texto se traduz em "texto". Um varchar pode conter muito menos itens, um texto pode ter (quase) qualquer tamanho.

Para uma análise aprofundada com boas referências, consulte http://www.pythian.com/news/7129/text-vs-varchar/

Edit: Alguns mecanismos de banco de dados podem carregar varchar de uma só vez, mas armazenam texto (e blob) fora da tabela. Um SELECT name, amount FROM products poderia, ser muito mais lento ao usar text para name que quando você usa varchar . E como o Rails, por padrão, carrega registros com SELECT * FROM... suas colunas de texto serão carregadas. Isso provavelmente nunca será um problema real no seu ou no meu aplicativo (otimização prematura é ...). Mas saber que o texto nem sempre é "gratuito" é bom saber.


Use string para campo mais curto, como nomes, endereço, telefone, empresa

Use o texto para conteúdo maior, comentários, conteúdo, parágrafos.

Minha regra geral, se é algo que é mais do que uma linha, eu normalmente escolho o texto, se for um curto 2-6 palavras, eu vou para string.

A regra oficial é 255 para uma string. Então, se sua string tiver mais de 255 caracteres, vá para o texto.





ruby-on-rails