Rails 4: Lista de tipos de dados disponíveis

406

Onde posso encontrar uma lista de tipos de dados que podem ser usados ​​no Ruby on Rails 4? Tal como

  • text
  • string
  • integer
  • float
  • date

Continuo aprendendo sobre os novos e adoraria ter uma lista à qual pudesse me referir facilmente.

Nicolas Raoul
fonte
1
@ MarkThomas: Não é uma duplicata. A minha pergunta aqui é especificamente para o Rails 4. #
Nicolas Raoul
A resposta aceita nessa pergunta é essencialmente a mesma que sua resposta aceita. Ambos apontam para os documentos do Rails 4. Além disso, é um ponto discutível, porque os tipos de dados ActiveRecord não foram alterados do Rails 3 para o Rails 4.
Mark Thomas
10
Eu pelo menos não sabia que os tipos de dados AR não mudavam entre os trilhos 3 e 4, por isso estou agradecido por esta pergunta / resposta estar aqui.
DTY

Respostas:

667

Aqui estão todos os tipos de dados do Rails 4 (migração do ActiveRecord):

  • :binary
  • :boolean
  • :date
  • :datetime
  • :decimal
  • :float
  • :integer
  • :bigint
  • :primary_key
  • :references
  • :string
  • :text
  • :time
  • :timestamp

Fonte: http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html#method-i-add_column
São os mesmos do Rails 3 .

Se você usa o PostgreSQL, também pode tirar proveito destes:

  • :hstore
  • :json
  • :jsonb
  • :array
  • :cidr_address
  • :ip_address
  • :mac_address

Eles são armazenados como seqüências de caracteres se você executar seu aplicativo com um banco de dados não PostgreSQL.

Editar, 19 de setembro de 2016:

muito mais tipos de dados específicos do postgres no Rails 4 e ainda mais no Rails 5.

Nicolas Raoul
fonte
1
Acredito que esses são os tipos de dados suportados em todos os bancos de dados. No entanto, como Peter de Ridder menciona, existem alguns tipos de dados como o hstore que ainda são suportados.
Althaf Hameez 29/07
Pergunta: a documentação do postgres parece não ter texttipo de dados. No entanto, os trilhos ainda podem lidar com isso? O que se passa em segundo plano?
ahnbizcad
O PostgreSQL possui um tipo de dados de texto. Sob o capô, todos os campos varchar / texto são matrizes de comprimento variável. postgresql.org/docs/9.3/interactive/datatype-character.html
Makhan
Gostaria de acrescentar que, se você estiver usando um banco de dados que não seja do postgres e seu aplicativo schema_format não esteja configurado para usar: sql, o arquivo schema.rb não poderá despejar a tabela que usa tipos como: json. O esquema ainda será despejado para as tabelas que usam tipos padrão, mas você verá um comentário para a tabela com tipos especiais como "não foi possível despejar a tabela ...". Olhe aqui para definir o schema_format .
18605 bpercevic
Além disso, essas colunas terão um tipo nilem um banco de dados não-postgres. Você pode inspecionar o tipo no console com Model.columns_hash["column_name"].type. Estas são apenas as coisas que eu encontrei ao usar: tipo de coluna json, posso estar errado e isso pode não acontecer com todo mundo, mas pensei em avisar futuros leitores caso tenham problemas. Independentemente disso, marque +1 nesta resposta porque realmente me ajudou.
21815 bpercevic
249

Você também pode achar útil saber em geral para que esses tipos de dados são usados:

  • :string- é para pequenos tipos de dados, como um título. ( Você deve escolher string ou texto? )
  • :text - é para dados mais longos de texto, como um parágrafo de informações
  • :binary - é para armazenar dados como imagens, áudio ou filmes.
  • :boolean - é para armazenar valores verdadeiros ou falsos.
  • :date - armazene apenas a data
  • :datetime - armazene a data e hora em uma coluna.
  • :time - é apenas por tempo
  • :timestamp- para armazenar data e hora em uma coluna ( qual é a diferença entre datetime e timestamp? )
  • :decimal- é para decimais ( exemplo de como usar decimais ).
  • :float- é para decimais. ( Qual é a diferença entre decimal e float? )
  • :integer - é para números inteiros.
  • :primary_key - chave exclusiva que pode identificar exclusivamente cada linha em uma tabela

Também há referências usadas para criar associações. Mas não tenho certeza se esse é um tipo de dados real .

Novos tipos de dados do Rails 4 disponíveis no PostgreSQL:

  • :hstore- armazenando pares de chave / valor em um único valor ( saiba mais sobre esse novo tipo de dados )
  • :array- um arranjo de números ou seqüências de caracteres em uma linha específica ( saiba mais sobre isso e veja exemplos )
  • :cidr_address - usado para endereços de host IPv4 ou IPv6
  • :inet_address - usado para endereços de host IPv4 ou IPv6, o mesmo que cidr_address, mas também aceita valores com bits diferentes de zero à direita da máscara de rede
  • :mac_address - usado para endereços de host MAC

Saiba mais sobre os tipos de dados de endereço aqui e aqui .

Além disso, aqui está o guia oficial sobre migrações: http://edgeguides.rubyonrails.org/migrations.html

lflores
fonte
13
Aplausos. +1 por detalhamento e antecipação de uso. Essa é a mentalidade UX ali.
ahnbizcad
5
Resposta absolutamente fantástica - muito obrigado por isso. Os links para os artigos sobre diferenças literalmente tiraram as perguntas da minha boca.
nlh 11/09/14
3
Para Postgres existe adicionalmente um uuidtipo que pode ser utilizado como campo normal como t.uuid :name... ou como chave primária como create_table :users, id: :uuid do...ou por exemplot.primary_key :id, :uuid, :default => 'uuid_generate_v1()'
TNT
1
Tipos adicionais de PostgreSQL suportados pelo Rails listados nos documentosActiveRecord::ConnectionAdapters::PostgreSQL::ColumnMethods da API para . Os destaques incluem money, json, xml,daterange
Eliot Sykes
1
Sim, o uuid foi adicionado ao Postgres, mas não é retornado com um registro ativo create (). Esse problema foi corrigido no Rails 5?
Martin Sommer
156

É importante conhecer não apenas os tipos, mas também o mapeamento desses tipos para os tipos de banco de dados:

insira a descrição da imagem aqui

insira a descrição da imagem aqui


Fonte adicionada - Desenvolvimento Web Agile com Rails 4

gotqn
fonte
1
Eu ficaria interessado em ver o tipo json nesta tabela, se você quiser
Freedom_Ben
2
Você sempre pode verificar o NATIVE_DATABASE_TYPESadaptador que precisa - github.com/rails/rails/blob/master/activerecord/lib/…
gotqn
Existe um ponto nos guias ou uma única fonte de verdade para essas coisas ao longo do tempo?
26715 Hugo Hugo
81

Você pode acessar esta lista sempre que quiser (mesmo que não tenha acesso à Internet) através de:

rails generate model -h
tomascharad
fonte
5

O Rails4 tem alguns tipos de dados adicionados para o Postgres.

Por exemplo, o railscast # 400 nomeia dois deles:

O Rails 4 tem suporte para tipos de dados nativos no Postgres e mostraremos dois aqui, embora muitos outros sejam suportados: array e hstore. Podemos armazenar matrizes em uma coluna do tipo string e especificar o tipo para hstore.

Além disso, você também pode usar cidr, inet e macaddr. Para maiores informações:

https://blog.engineyard.com/2013/new-in-rails-4

Peter de Ridder
fonte