Bla*_*man 72 ruby-on-rails rails-migrations
我找不到包含所有数据类型列表的活动记录文档页面.
有人可以帮我吗?
Mar*_*mas 105
如果您正在讨论迁移的类型,例如字符串,整数,日期时间等,那么您需要ActiveRecord :: ConnectionAdapters :: TableDefinition,列方法.(Rails的5编辑:又见连接add_column.)
截至本次更新,标准类型为:
:primary_key:string:text:integer:bigint:float:decimal:numeric:datetime:time:date:binary:boolean:decimal每个数据库的实现都不同,所以如果可能的话我会避免它.您可以使用不在此列表中的类型,只要数据库支持该类型(例如,:polygon在MySQL中),但这不是数据库不可知的,也应该避免.
您还可以在源中查看ActiveRecord数据类型.每个DBMS适配器都包含自己的映射.例如,在MySQL的情况下,请查看此文件:https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb#L148或通过此行代码获取当前文件DBMS适配器:
ActiveRecord::Base.connection.native_database_types.keys
Run Code Online (Sandbox Code Playgroud)
请注意,这是基于 2015 年 2 月 13 日的 Rails 源代码(Rails 4.2)
如果有人想查看这些数据类型如何映射到您正在使用的数据库中。
您可以在 github 上轻松获取 rails 源代码。
例如
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 }
}
Run Code Online (Sandbox Code Playgroud)
如果有人想要 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" },
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40857 次 |
| 最近记录: |