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.



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:

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


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


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


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

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.