Ich kann die aktive Dokumentationsseite für Datensätze mit einer Liste aller Datentypen nicht finden.
Kann mir jemand helfen?
quelle
Ich kann die aktive Dokumentationsseite für Datensätze mit einer Liste aller Datentypen nicht finden.
Kann mir jemand helfen?
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
indb/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:
quelle
Hier sind die Standardzuordnungen von Typen für Datenbankadapter:
quelle
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
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" }, }
quelle