Где находится страница документации для типов данных ActiveRecord?
Я не могу найти страницу документирования активной записи, которая содержит список всех типов данных.
может кто-нибудь помочь мне?
4 ответа:
если вы говорите о типах для миграции, например string, integer, datetime и т. д., то вы хотите ActiveRecord:: ConnectionAdapters:: TableDefinition на колонки метод. (Rails 5 edit: см. также соединение. add_column.)
начиная с этого обновления, стандартные типы являются:
:primary_key
:string
:text
:integer
:bigint
:float
:decimal
:numeric
:datetime
:time
:date
:binary
:boolean
реализация
:decimal
отличается с каждой базой данных, так что я бы избежать его, если это возможно. Вы можете используйте тип не в этом списке, если он поддерживается вашей базой данных (например,:polygon
в MySQL), но это не будет агностиком базы данных и также следует избегать.
вы можете ознакомиться типы данных ActiveRecord В источники. Каждый адаптер СУБД содержит свое собственное отображение. Например, в случае MySQL посмотрите на этот файл: https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb#L148 или получить его по этой строке кода для текущего адаптера СУБД:
ActiveRecord::Base.connection.native_database_types.keys
Примечание это основано на исходном коде Rails от 13 февраля 2015 года (Rails 4.2)
В случае если кто-то хочет увидеть, как эти типы данных сопоставляются в базу данных вы используете.
вы можете легко захватить исходный код rails на github.
типы данных Rails для сопоставления данных 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 } }
и если кто-то хочет postgreSQL здесь вы идете.
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" }, }