Ich kann die aktive Dokumentationsseite für Datensätze mit einer Liste aller Datentypen nicht finden.
Kann mir jemand helfen?
Antworten:
Wenn Sie über die Typen für Migrationen sprechen, z. B. Zeichenfolge, Ganzzahl, Datum / Uhrzeit usw., möchten Sie ActiveRecord :: ConnectionAdapters :: TableDefinition , die Spaltenmethode . (Rails 5 bearbeiten: siehe auch Verbindung. Add_column .)
Ab diesem Update sind die Standardtypen:
:primary_key
:string
:text
:integer
:bigint
:float
:decimal
:numeric
:datetime
:time
:date
:binary
:boolean
Die Implementierung von :decimal
ist bei jeder Datenbank unterschiedlich, daher würde ich sie 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). Dies ist jedoch nicht datenbankunabhängig und sollte auch vermieden werden.
:timestamp
scheint nicht mehr auf der Liste zu sein und wird behandelt als :datetime
(erscheint wie :datetime
in db/schema.rb
). Oder ist wohl nur ein Alias für :datetime
.
Sie können ActiveRecord-Datentypen auch in Quellen anzeigen . Jeder DBMS-Adapter enthält eine eigene Zuordnung. Sehen Sie sich beispielsweise in MySQL-Fällen diese Datei an: https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb#L148 oder rufen Sie sie über diese Codezeile auf DBMS-Adapter:
ActiveRecord::Base.connection.native_database_types.keys
Beachten Sie, dass dies auf dem Rails-Quellcode vom 13. Februar 2015 basiert (Rails 4.2).
Falls jemand sehen möchte, wie diese Datentypen der von Ihnen verwendeten Datenbank zugeordnet werden.
Sie können bei Github problemlos den Rails-Quellcode abrufen.
Zum Beispiel
Leitet Datentypen an die Zuordnung von MySQL-Daten.
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 }
}
Gefunden unter https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb#L148
Und wenn jemand hier postgreSQL will, dann geht es los.
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" },
}