ChatGPT解决这个技术问题 Extra ChatGPT

Rails 4:可用数据类型列表

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

文本

细绳

整数

漂浮

日期

我一直在学习新的,我很想有一个我可以轻松参考的列表。

@MarkThomas:不是重复的。我的问题专门针对 Rails 4。
该问题中接受的答案与您接受的答案基本相同。两者都指向 Rails 4 文档。此外,这是一个有争议的问题,因为 ActiveRecord 数据类型没有从 Rails 3 更改为 Rails 4。
我不知道 AR 数据类型在 rails 3 和 rails 4 之间没有变化,所以我很感激这个问题/答案就在这里。

J
Josien

以下是所有 Rails 4(ActiveRecord 迁移)数据类型:

:二进制

:boolean

:日期

:约会时间

:十进制

:漂浮

:整数

:大整数

:首要的关键

:参考

:细绳

:文本

:时间

:时间戳

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

如果您使用 PostgreSQL,您还可以利用这些优势:

:hstore

:json

:jsonb

:大批

:cidr_address

:IP地址

:MAC地址

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

更多 PostgreSQL 数据类型

导轨 4

导轨 5

导轨 6

导轨 7


我相信这些是所有数据库都支持的数据类型。然而,正如 Peter de Ridder 提到的,仍然支持一些数据类型,如 hstore。
问题:postgres 文档似乎没有 text 数据类型。然而,rails 仍然可以处理它吗?后台发生了什么?
PostgreSQL 确实有一个文本数据类型。在引擎盖下,所有 varchar/text 字段都是可变长度数组。 postgresql.org/docs/9.3/interactive/datatype-character.html
我想补充一点,如果您使用的是非 postgres 数据库并且您的应用程序 schema_format 未设置为使用 :sql,那么您的 schema.rb 文件将无法转储使用 :json 等类型的表。对于使用默认类型的表,架构仍将被转储,但您会看到具有特殊类型的表的注释,例如“无法转储表...”。 Look here to set the schema_format
此外,这些列在非 postgres 数据库中的类型为 nil。您可以使用 Model.columns_hash["column_name"].type 在控制台中检查类型。这些只是我在使用 :json 列类型时遇到的问题,我可能是错的,这可能不会发生在每个人身上,但我想我会让未来的读者知道,以防他们遇到麻烦。无论如何,这个答案+1,因为它真的帮助了我。
C
Community

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

:string - 用于标题等小数据类型。 (你应该选择字符串还是文本?)

:text - 用于较长的文本数据,例如一段信息

:binary - 用于存储图像、音频或电影等数据。

:boolean - 用于存储真值或假值。

:date - 仅存储日期

:datetime - 将日期和时间存储到列中。

:time - 仅用于时间

:timestamp - 用于将日期和时间存储到列中。(日期时间和时间戳有什么区别?)

:decimal - 用于小数(如何使用小数的示例)。

:float - 用于小数。 (十进制和浮点数有什么区别?)

:integer - 用于整数。

:primary_key - 可以唯一标识表中每一行的唯一键

还有用于创建关联的引用。但是,I'm not sure this is an actual data type

PostgreSQL 中可用的新 Rails 4 数据类型:

:hstore - 在单个值中存储键/值对(了解有关这种新数据类型的更多信息)

:array - 特定行中的数字或字符串的排列(了解更多信息并查看示例)

:cidr_address - 用于 IPv4 或 IPv6 主机地址

:inet_address - 用于 IPv4 或 IPv6 主机地址,与 cidr_address 相同,但它也接受网络掩码右侧的非零位值

:mac_address - 用于 MAC 主机地址

详细了解地址数据类型 herehere

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


掌声。 +1 表示彻底性和使用预期。这就是用户体验的心态。
绝对很棒的答案-非常感谢。关于差异的文章的链接从字面上把问题从我嘴里说出来了。
对于 Postgres,还有一个 uuid 类型,可以用作 普通字段,如 t.uuid :name... 或作为主键,如 create_table :users, id: :uuid do... 或例如 t.primary_key :id, :uuid, :default => 'uuid_generate_v1()'
API docs for ActiveRecord::ConnectionAdapters::PostgreSQL::ColumnMethods 中列出的 Rails 支持的其他 PostgreSQL 类型。重点包括 moneyjsonxmldaterange
是的,为 Postgres 添加了 uuid,但它没有与 Active Record create() 一起返回。 Rails 5 解决了这个问题吗?
g
gotqn

不仅要了解类型,还要了解这些类型到数据库类型的映射,这一点很重要:

https://i.stack.imgur.com/Q0j0x.png

https://i.stack.imgur.com/tuRiZ.png

添加的来源 - Agile Web Development with Rails 4


如果您愿意的话,我有兴趣查看此表中的 json 类型
您可以随时检查 NATIVE_DATABASE_TYPES 以获得所需的适配器 - github.com/rails/rails/blob/master/activerecord/lib/…
随着时间的推移,这些事情的指南或单一的事实来源是否存在?
t
tomascharad

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

rails generate model -h

在“可用字段类型:”部分
P
Peter de Ridder

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

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

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

此外,您还可以使用 cidr、inet 和 macaddr。了解更多信息:

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