Ваш :options
для вашего create_table
вызова специфичен для MySQL, поэтому вы можете просто отбросить его:
create_table :versions do |t|
#...
end
Есть пара других вещей, которые вы также можете изменить:
t.string
без :limit
эквивалентно t.text
с PostgreSQL. Возможно, вы захотите добавить :limit
к ним, если вы предполагаете, что будет применяться ограничение размера по умолчанию для MySQL для varchar
столбцов (если они есть). Или вы можете изменить его на t.text
, чтобы он был более явным, чем столбец произвольного размера.
- В PostgreSQL нет опции
:limit
для t.text
, поэтому вы должны отказаться от нее, чтобы избежать путаницы.
- В зависимости от того, что на самом деле представляет собой ваш столбец
object
, вы можете перенести его в jsonb
. Например, если вы используете serialize :object
в своей модели, то лучше использовать jsonb
без сериализации в YAML, как это делает serialize
.
t.string
с :limit
(т.е. varchar(n)
в базе данных) на самом деле немного дороже, чем t.string
без :limit
(который на самом деле просто t.text
с другим именем). Если у вас нет строгой потребности в этом limit: 191
, вы можете отказаться от него и позволить item_type
без строгого ограничения размера. Вам не нужно отбрасывать :limit
, но с PostgreSQL это не имеет большого значения.