Carriles 4: lista de tipos de datos disponibles


406

¿Dónde puedo encontrar una lista de tipos de datos que se pueden usar en Ruby on Rails 4? Como

  • text
  • string
  • integer
  • float
  • date

Sigo aprendiendo sobre nuevos y me encantaría tener una lista a la que pueda referirme fácilmente.



1
@ MarkThomas: No es un duplicado. Mi pregunta aquí es específicamente para Rails 4.
Nicolas Raoul

La respuesta aceptada en esa pregunta es esencialmente la misma que su respuesta aceptada. Ambos apuntan a los Rails 4 docs. Además, es un punto discutible porque los tipos de datos ActiveRecord no cambiaron de Rails 3 a Rails 4.
Mark Thomas

10
Por mi parte, no sabía que los tipos de datos AR no cambiaron entre los rieles 3 y 4, así que estoy agradecido de que esta pregunta / respuesta esté aquí.
Dty

Respuestas:


667

Aquí están todos los tipos de datos Rails 4 (migración ActiveRecord):

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

Fuente: http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html#method-i-add_column
Estos son los mismos que con Rails 3 .

Si usa PostgreSQL, también puede aprovechar estos:

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

Se almacenan como cadenas si ejecuta su aplicación con una base de datos no PostgreSQL.

Edición, 19 de septiembre de 2016:

Hay muchos más tipos de datos específicos de postgres en Rails 4 e incluso más en Rails 5.


1
Creo que estos son los tipos de datos que son compatibles con todas las bases de datos. Sin embargo, como menciona Peter de Ridder, hay algunos tipos de datos como hstore que todavía son compatibles.
Althaf Hameez

Pregunta: la documentación de postgres no parece tener texttipo de datos. ¿Sin embargo, los rieles aún pueden manejarlo? ¿Qué sucede en el fondo?
ahnbizcad

PostgreSQL tiene un tipo de datos de texto. Bajo el capó, todos los campos varchar / text son matrices de longitud variable. postgresql.org/docs/9.3/interactive/datatype-character.html
makhan

Me gustaría agregar que si está utilizando una base de datos no postgres y su aplicación schema_format no está configurada para usar: sql, entonces su archivo schema.rb no podrá volcar la tabla que usa tipos como: json. El esquema seguirá siendo volcado para las tablas que usan tipos predeterminados, pero verá un comentario para la tabla con tipos especiales como "no se pudo volcar la tabla ...". Mire aquí para establecer el formato de esquema .
bpercevic

Además, esas columnas tendrán tipo nilen una base de datos no postgres. Puede inspeccionar el tipo en la consola con Model.columns_hash["column_name"].type. Estas son solo cosas con las que me he encontrado al usar: tipo de columna json, puedo estar equivocado y esto puede no sucederle a todos, pero pensé en informar a los futuros lectores en caso de que tengan problemas. De todos modos, +1 para esta respuesta porque realmente me ayudó.
bpercevic

249

También puede resultarle útil saber en general para qué se utilizan estos tipos de datos:

También hay referencias utilizadas para crear asociaciones. Pero, no estoy seguro de que este sea un tipo de datos real .

Nuevos tipos de datos de Rails 4 disponibles en PostgreSQL:

  • :hstore- almacenar pares clave / valor dentro de un solo valor ( obtenga más información sobre este nuevo tipo de datos )
  • :array- una disposición de números o cadenas en una fila particular ( aprenda más sobre esto y vea ejemplos )
  • :cidr_address - utilizado para direcciones de host IPv4 o IPv6
  • :inet_address - se usa para direcciones de host IPv4 o IPv6, igual que cidr_address pero también acepta valores con bits distintos de cero a la derecha de la máscara de red
  • :mac_address - utilizado para direcciones de host MAC

Obtenga más información sobre los tipos de datos de dirección aquí y aquí .

Además, aquí está la guía oficial sobre migraciones: http://edgeguides.rubyonrails.org/migrations.html


13
Aplausos. +1 por minuciosidad y anticipación de uso. Esa es la mentalidad UX allí mismo.
ahnbizcad

55
Respuesta absolutamente excelente, muchas gracias por esto. Los enlaces a los artículos sobre diferencias literalmente me sacaron las preguntas de la boca.
nlh

3
Para Postgres, además, hay un uuidtipo que se puede usar como campo normal como t.uuid :name... o como clave principal como create_table :users, id: :uuid do...o por ejemplot.primary_key :id, :uuid, :default => 'uuid_generate_v1()'
TNT

1
Tipos adicionales de PostgreSQL compatibles con Rails enumerados en los documentos de API paraActiveRecord::ConnectionAdapters::PostgreSQL::ColumnMethods . Los puntos culminantes incluyen money, json, xml,daterange
Eliot Sykes

1
Sí, se agregó uuid para Postgres, pero no se devuelve con un registro activo create (). ¿Se ha solucionado ese problema con Rails 5?
Martin Sommer

156

Es importante conocer no solo los tipos, sino también la asignación de estos tipos a los tipos de bases de datos:

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí


Fuente agregada - Desarrollo web ágil con Rails 4


1
Me gustaría ver el tipo json en esta tabla, si te apetece
Freedom_Ben

2
Siempre puede verificar el NATIVE_DATABASE_TYPESadaptador que necesita - github.com/rails/rails/blob/master/activerecord/lib/…
gotqn

¿Hay un lugar en las guías o una única fuente de verdad para estas cosas con el tiempo?
Hugo

81

Puede acceder a esta lista cada vez que lo desee (incluso si no tiene acceso a Internet) a través de:

rails generate model -h

5

Rails4 tiene algunos tipos de datos agregados para Postgres.

Por ejemplo, railscast # 400 nombra dos de ellos:

Rails 4 es compatible con los tipos de datos nativos en Postgres y mostraremos dos de estos aquí, aunque se admiten muchos más: array y hstore. Podemos almacenar matrices en una columna de tipo cadena y especificar el tipo para hstore.

Además, también puedes usar cidr, inet y macaddr. Para más información:

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.