Я не могу использовать bigint
в идентификаторе моей модели, как вы это обычно делаете при использовании Rails 5, так как я использую rails 4.1
Я хочу, чтобы у моей модели был автоматически увеличивающийся идентификатор, как обычно, но я хочу, чтобы это был bigint, а не обычное целое число.
Таблица транзакций будет содержать миллионы записей, и перенос идентификаторов позже будет головной болью, требующей простоя.
Сначала я попытался использовать генератор рельсов (как хороший ленивый разработчик)
Что дало мне
class CreateTransactions < ActiveRecord::Migration
def change
create_table :transactions do |t|
t.bigint :id
#more stuff omitted
end
end
end
Который не может мигрировать с
undefined method `bigint' for #<ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::TableDefinition:0x00007fe8df5c9b88>
Я уже пытался изменить это на
create_table :transactions, id: false do |t|
t.bigint :id
end
Это работает. Миграция выполняется, но затем не удается автоматически увеличить идентификатор. Смысл, я не могу сделать Transaction.create
или он кричит на меня из слоя db о null
ограничении идентификатора.
Очевидно, вы можете создать таблицу и затем изменить ее с помощью change_column
, но это не отразилось на schema.rb
, так что меня это беспокоит.
Также очевидно, что ^^ (change_column
по id) - необратимая миграция, поэтому я хочу этого избежать.
Я знаю, что должен быть простой / безрассудный, приятный способ сделать эту работу.
ОЖИДАЕМЫЙ РЕЗУЛЬТАТ:
Transaction.create
Дает мне новую транзакцию, в которой идентификатор устанавливается как обычный, но это большой int 8 bits
, а не обычный int 4 bits