Я не могу найти страницу регистрации активной записи, которая имеет список всех типов данных.
Может кто-нибудь помочь мне?
Я не могу найти страницу регистрации активной записи, которая имеет список всех типов данных.
Может кто-нибудь помочь мне?
Если вы говорите о типах миграций, например. string, integer, datetime и т.д., тогда вы хотите ActiveRecord:: ConnectionAdapters:: TableDefinition, column. (Редактирование Rails 5: см. Также соединение. 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 типы данных для сопоставления datatyes 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" },
}