2010-10-18 15 views

Respuesta

98

Si habla de los tipos de migraciones, p. cadena, entero, fecha y hora, etc., luego quiere ActiveRecord::ConnectionAdapters::TableDefinition, el método column. (Rieles 5 de edición: véase también la conexión add_column..)

partir de esta fecha, los tipos estándar son:

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

La implementación de :decimal es diferente con cada base de datos, así que lo evitaría si es posible. Puede utilizar un tipo que no esté en esta lista, siempre que sea compatible con su base de datos (por ejemplo, :polygon en MySQL), pero esto no será independiente de la base de datos y también debe evitarse.

+0

¿Solo una cuestión de elección o alguna razón en particular para agradecer a ApiDock sobre los documentos oficiales? – Swanand

+0

@Swanand Es el mismo contenido, por supuesto, pero la navegación es mejor. Y la capacidad de ver cuánto ha cambiado algo en varias versiones de Rails es invaluable. –

+0

@Swanand Las notas creadas por el usuario son muy útiles también en áreas donde la documentación por sí sola no es muy útil. – Ajedi32

4

Aquí está el asignaciones predeterminadas de tipos de adaptadores de base de datos:

enter image description here enter image description here

4

Nota esto se basa en los carriles Código Fuente de 13 Feb 2015 (Rails 4,2)

En caso de que alguien quiera ver cómo se mapean estos tipos de datos en la base de datos que está utilizando.

Puede agarrar fácilmente en el código fuente de rails en github.

Por ejemplo tipos de datos

rieles para MySQL datatyes mapeo.

NATIVE_DATABASE_TYPES = { 
     :primary_key => "int(11) auto_increment PRIMARY KEY", 
     :string  => { :name => "varchar", :limit => 255 }, 
     :text  => { :name => "text" }, 
     :integer  => { :name => "int", :limit => 4 }, 
     :float  => { :name => "float" }, 
     :decimal  => { :name => "decimal" }, 
     :datetime => { :name => "datetime" }, 
     :time  => { :name => "time" }, 
     :date  => { :name => "date" }, 
     :binary  => { :name => "blob" }, 
     :boolean  => { :name => "tinyint", :limit => 1 } 
     } 

encontrar en https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb#L148

Y si alguien quiere PostgreSQL Aquí tienes.

NATIVE_DATABASE_TYPES = { 
     primary_key: "serial primary key", 
     bigserial: "bigserial", 
     string:  { name: "character varying" }, 
     text:  { name: "text" }, 
     integer:  { name: "integer" }, 
     float:  { name: "float" }, 
     decimal:  { name: "decimal" }, 
     datetime: { name: "timestamp" }, 
     time:  { name: "time" }, 
     date:  { name: "date" }, 
     daterange: { name: "daterange" }, 
     numrange: { name: "numrange" }, 
     tsrange:  { name: "tsrange" }, 
     tstzrange: { name: "tstzrange" }, 
     int4range: { name: "int4range" }, 
     int8range: { name: "int8range" }, 
     binary:  { name: "bytea" }, 
     boolean:  { name: "boolean" }, 
     bigint:  { name: "bigint" }, 
     xml:   { name: "xml" }, 
     tsvector: { name: "tsvector" }, 
     hstore:  { name: "hstore" }, 
     inet:  { name: "inet" }, 
     cidr:  { name: "cidr" }, 
     macaddr:  { name: "macaddr" }, 
     uuid:  { name: "uuid" }, 
     json:  { name: "json" }, 
     jsonb:  { name: "jsonb" }, 
     ltree:  { name: "ltree" }, 
     citext:  { name: "citext" }, 
     point:  { name: "point" }, 
     bit:   { name: "bit" }, 
     bit_varying: { name: "bit varying" }, 
     money:  { name: "money" }, 
     } 
Cuestiones relacionadas