Ответ 1
ActiveRecord использует varchar(255)
(или character varying (255)
для педантичности), если вы не укажете конкретный предел. Вы всегда можете прыгать в PostgreSQL с помощью psql
и говорить \d your_table
, чтобы получить таблицу, которую видит PostgreSQL.
Я не думаю, что значение по умолчанию указано где угодно, но прямо здесь, в источнике:
NATIVE_DATABASE_TYPES = {
:primary_key => "serial primary key",
:string => { :name => "character varying", :limit => 255 },
#...
Ближайшая вещь к спецификации находится в Руководство по миграции:
Они будут сопоставлены с соответствующим базовым типом базы данных, например, с MySQL
:string
сопоставляется сvarchar(255)
.
Но это не о PostgreSQL, а не о гарантии.
В стороне, если вы используете PostgreSQL, вы должны почти всегда перейти прямо к :text
и притвориться, что :string
не существует. PostgreSQL рассматривает их одинаково, за исключением того, что он должен выполнить проверку длины на varchar
. Здесь еще немного обсуждается здесь в одном из моих ответов: Изменение типа столбца на более длинные строки в рельсах.