我的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

10-02 07:55
查看更多