我的googlefu一定很弱,因为我找不到任何东西可以告诉我Rails应用程序(在Heroku托管,使用PostgreSQL作为数据库)中字符串列的默认限制。
任何帮助都将不胜感激!
最佳答案
如果没有指定特定的限制,ActiveRecord将使用varchar(255)
(或者character varying (255)
来表示迂腐)。您总是可以使用psql
跳到PostgreSQL中,然后说\d your_table
以获取PostgreSQL看到的表。
我认为默认值在任何地方都没有指定,但它是right here in the source:
NATIVE_DATABASE_TYPES = {
:primary_key => "serial primary key",
:string => { :name => "character varying", :limit => 255 },
#...
最接近规范的是Migrations Guide:
它们将映射到适当的底层数据库类型,例如MySQL
:string
被映射到VARCHAR(255)
。但这与PostgreSQL无关,也不完全是一个保证。
另一方面,如果你使用PostgreSQL,你应该总是直接进入
:text
并假装:string
不存在。PostgreSQL对它们的内部处理是一样的,只是它必须对varchar
进行长度检查。我的另一个答案是:Changing a column type to longer strings in rails。