2010-10-18 1 views

Antwort

98

Wenn Sie über die Typen für Migrationen sprechen, z. String, Integer, Datetime, etc, dann wollen Sie ActiveRecord::ConnectionAdapters::TableDefinition, die column Methode. (Rails 5 edit: siehe auch Verbindung add_column..)

Ab diesem Update sind die Standardtypen sind:

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

Die Implementierung von :decimal ist mit jeder Datenbank anders, also würde ich es nach Möglichkeit vermeiden. Sie können einen Typ verwenden, der nicht in dieser Liste enthalten ist, solange er von Ihrer Datenbank unterstützt wird (z. B. :polygon in MySQL), aber dies ist nicht datenbankunabhängig und sollte ebenfalls vermieden werden.

+0

Nur eine Frage der Wahl, oder ein besonderer Grund, ApiDock über offizielle Dokumente zu mögen? – Swanand

+0

@Swanand Es ist natürlich der gleiche Inhalt, aber die Navigation ist besser. Und die Fähigkeit zu sehen, wie viel sich in verschiedenen Rails-Versionen verändert hat, ist von unschätzbarem Wert. –

+0

@Swanand Die vom Benutzer erstellten Notizen sind auch in Bereichen nützlich, in denen die Dokumentation alleine nicht sehr hilfreich ist. – Ajedi32

4

Hier ist die Standardzuordnungen von Typen für die Datenbankadapter:

enter image description here enter image description here

4

Hinweis dieser basiert auf Rails Source Code vom 13. Februar 2015 (Rails 4,2)

Falls jemand sehen möchte, wie diese Datentypen in die von Ihnen verwendete Datenbank übertragen werden.

Sie können leicht auf Schienen Quellcode bei Github greifen.

Zum Beispiel

Rails Datentypen datatyes Zuordnung MySQL.

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 } 
     } 

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

Und wenn jemand hier postgreSQL will, dass Sie gehen.

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" }, 
     }