ActiveRecord数据types的文档页在哪里?

我找不到具有所有数据types列表的活动logging文档页面。

有人可以帮我吗?

如果你正在谈论的迁移types,如string,整数,date时间等,那么你需要ActiveRecord :: ConnectionAdapters :: TableDefinition列的方法。 (Rails 5编辑:另请参阅connection。add_column。)

截至本次更新,标准types是:

  • :primary_key
  • :string
  • :text
  • :integer
  • :bigint
  • :float
  • :decimal
  • :numeric
  • :datetime
  • :time
  • :date
  • :binary
  • :boolean

:decimal的实现与每个数据库是不同的,所以如果可能的话,我会避免它。 只要数据库支持该types(例如:polygon MySQL中的:polygon ),就可以使用不在此列表中的types,但这不会是数据库不可知的,也应该避免。

你也可以在源文件中看到ActiveRecord数据types 。 每个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 

以下是数据库适配器types的默认映射:

在这里输入图像说明在这里输入图像说明

请注意,这是基于2015年2月13日的Rails源代码(Rails 4.2)

如果有人想看看这些数据types如何映射到你正在使用的数据库。

您可以在github上的rails源代码轻松获取。

例如

将数据types导入到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 } } 

https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb#L148find

如果有人想在这里的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" }, }