Rails 4:可用数据类型列表


405

在哪里可以找到可以在Ruby on Rails 4中使用的数据类型的列表?如

  • text
  • string
  • integer
  • float
  • date

我一直在学习新的东西,我很想有一个我可以轻松参考的清单。



1
@MarkThomas:不是重复的。在这里我的问题是专门为Rails 4
尼古拉斯·拉乌尔·

该问题中接受的答案与您接受的答案基本相同。两者都指向Rails 4文档。此外,这是一个有争议的问题,因为ActiveRecord的数据类型并没有从Rails 3中切换到Rails的4
马克托马斯

10
我不知道AR数据类型在第3条和第4条之间没有变化,所以我很感激这个问题/答案在这里。
Dty

Answers:


667

这是所有的Rails 4(ActiveRecord迁移)数据类型:

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

来源:http : //api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html#method-i-add_column
这些与Rails 3相同。

如果使用PostgreSQL,还可以利用以下优势:

  • :hstore
  • :json
  • :jsonb
  • :array
  • :cidr_address
  • :ip_address
  • :mac_address

如果您使用非PostgreSQL数据库运行应用程序,则将它们存储为字符串。

编辑,2016年9月19日:

在Rails 4中有更多的 postgres特定数据类型,在Rails 5中甚至更多


1
我相信这些是所有数据库都支持的数据类型。但是,正如Peter de Ridder提到的那样,仍然支持某些数据类型,例如hstore。
Althaf Hameez,

问题:postgres文档似乎没有text数据类型。但是,滑轨仍然可以处理吗?后台发生了什么?
ahnbizcad 2014年

PostgreSQL确实有文本数据类型。在后台,所有varchar / text字段都是可变长度数组。postgresql.org/docs/9.3/interactive/datatype-character.html
makhan 2014年

我想补充一点,如果您使用的是非Postgres数据库,并且您的应用程序schema_format未设置为使用:sql,则您的schema.rb文件将无法转储使用:json之类的表。对于使用默认类型的表,该架构仍将被转储,但是您将看到具有特殊类型的表的注释,例如“无法转储表...”。看这里设置schema_format
bpercevic

同样,这些列将nil在非postgres数据库中具有类型。您可以使用来检查控制台中的类型Model.columns_hash["column_name"].type。这些只是我在使用:json列类型时遇到的事情,我可能是错的,并且可能不会在每个人身上都发生,但是我想我会在将来遇到麻烦的时候让未来的读者知道。无论如何,为此答案+1,因为它确实帮助了我。
bpercevic

249

您可能还会发现了解这些数据类型的用途是很有用的:

也有用于创建关联的参考。但是,我不确定这是实际的数据类型

PostgreSQL中提供了新的Rails 4数据类型:

在此处此处了解有关地址数据类型的更多信息。

另外,这是有关迁移的官方指南:http : //edgeguides.rubyonrails.org/migrations.html


13
掌声。+1为彻底和预期使用。那就是UX的心态。
ahnbizcad 2014年

5
绝对棒的答案-非常感谢。有关差异的文章的链接从字面上直截了当地提出了问题。
nlh 2014年

3
对于Postgres,还有一种uuid类型可以用作普通字段,例如,也可以用t.uuid :name... 作主键create_table :users, id: :uuid do...,例如t.primary_key :id, :uuid, :default => 'uuid_generate_v1()'
TNT 2015年

1
API的API文档中ActiveRecord::ConnectionAdapters::PostgreSQL::ColumnMethods列出了Rails支持的其他PostgreSQL类型。亮点包括moneyjsonxmldaterange
艾略特赛克斯

1
是的,为Postgres添加了uuid,但Active Record create()不会返回它。Rails 5是否已解决该问题?
Martin Sommer


81

您可以通过以下方式随时访问此列表(即使您没有Internet访问权限):

rails generate model -h

5

Rails4为Postgres添加了一些数据类型。

例如,railscast#400命名其中两个:

Rails 4在Postgres中支持本机数据类型,这里将显示其中两个,尽管还支持更多类型:array和hstore。我们可以将数组存储在字符串类型的列中,并指定hstore的类型。

此外,您还可以使用cidr,inet和macaddr。欲获得更多信息:

https://blog.engineyard.com/2013/new-in-rails-4

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.