在哪里可以找到可在 Ruby on Rails 4 中使用的数据类型列表?如
文本
细绳
整数
漂浮
日期
我一直在学习新的,我很想有一个我可以轻松参考的列表。
以下是所有 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
您可能还会发现大致了解这些数据类型的用途很有用:
: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 主机地址
此外,这里是关于迁移的官方指南:http://edgeguides.rubyonrails.org/migrations.html
uuid
类型,可以用作 普通字段,如 t.uuid :name...
或作为主键,如 create_table :users, id: :uuid do...
或例如 t.primary_key :id, :uuid, :default => 'uuid_generate_v1()'
ActiveRecord::ConnectionAdapters::PostgreSQL::ColumnMethods
中列出的 Rails 支持的其他 PostgreSQL 类型。重点包括 money
、json
、xml
、daterange
不仅要了解类型,还要了解这些类型到数据库类型的映射,这一点很重要:
https://i.stack.imgur.com/Q0j0x.png
https://i.stack.imgur.com/tuRiZ.png
添加的来源 - Agile Web Development with Rails 4
NATIVE_DATABASE_TYPES
以获得所需的适配器 - github.com/rails/rails/blob/master/activerecord/lib/…
您可以随时通过以下方式访问此列表(即使您没有 Internet 访问权限):
rails generate model -h
Rails4 为 Postgres 添加了一些数据类型。
例如,railscast #400 命名了其中两个:
Rails 4 在 Postgres 中支持本机数据类型,我们将在这里展示其中的两个,尽管支持更多:array 和 hstore。我们可以将数组存储在字符串类型的列中,并为 hstore 指定类型。
此外,您还可以使用 cidr、inet 和 macaddr。了解更多信息:
https://blog.engineyard.com/2013/new-in-rails-4
text
数据类型。然而,rails 仍然可以处理它吗?后台发生了什么?nil
。您可以使用Model.columns_hash["column_name"].type
在控制台中检查类型。这些只是我在使用 :json 列类型时遇到的问题,我可能是错的,这可能不会发生在每个人身上,但我想我会让未来的读者知道,以防他们遇到麻烦。无论如何,这个答案+1,因为它真的帮助了我。