Скажем, у меня есть модель под названием Transaction
, которая имеет атрибут :transaction_code
.
Я хочу, чтобы этот атрибут автоматически заполнялся порядковым номером, который может отличаться от id
(например, транзакция с id=1
может иметь transaction_code=1000
).
Я попытался создать последовательность в postgres, а затем сделать значение по умолчанию для столбца transaction_code
столбцом nextval
этой последовательности.
Дело в том, что если я не присваиваю никакого значения @transaction.transaction_code
на RoR, когда я выпускаю @transaction. save
на RoR, он пытается выполнить следующий SQL:
INSERT INTO transactions (transaction_code) VALUES (NULL);
Что это делает, так это создает новую строку в таблице Transactions, с transaction_code как NULL, вместо того, чтобы вычислить nextval последовательности и вставить его в соответствующий столбец. Таким образом, как я выяснил, если вы указываете NULL в postgres, он предполагает, что вы действительно хотите вставить NULL в этот столбец, независимо от того, что он имеет значение по умолчанию (я пришел из ORACLE, который имеет другое поведение).
Я открыт для любых решений по этому вопросу, либо если это делается в базе данных, либо в RoR:
save
Заранее спасибо.