Wo befindet sich die Dokumentationsseite für ActiveRecord-Datentypen?

73

Ich kann die aktive Dokumentationsseite für Datensätze mit einer Liste aller Datentypen nicht finden.

Kann mir jemand helfen?

Blankman
quelle

Antworten:

107

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 :decimalist 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. :polygonin MySQL). Dies ist jedoch nicht datenbankunabhängig und sollte auch vermieden werden.

Mark Thomas
quelle
Nur eine Frage der Wahl oder ein besonderer Grund, ApiDock gegenüber offiziellen Dokumenten zu mögen?
Swanand
@Swanand Es ist natürlich der gleiche Inhalt, aber die Navigation ist besser. Und die Fähigkeit zu sehen, wie sehr sich etwas in verschiedenen Rails-Versionen geändert hat, ist von unschätzbarem Wert.
Mark Thomas
@Swanand Die vom Benutzer erstellten Notizen sind auch in Bereichen sehr nützlich, in denen die Dokumentation allein nicht sehr hilfreich ist.
Ajedi32
Beachten Sie, dass diese in Rails 4 gleich geblieben sind.
Mark Thomas
:timestampscheint nicht mehr auf der Liste zu sein und wird behandelt als :datetime(erscheint wie :datetimein db/schema.rb). Oder ist wohl nur ein Alias für :datetime.
X-Yuri
5

Hier sind die Standardzuordnungen von Typen für Datenbankadapter:

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

gotqn
quelle
4

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