Ruby on Rails + PostgreSQL: использование пользовательских последовательностей
Скажем, у меня есть модель под названием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);
Это создает новую строку в таблице транзакций с кодом транзакции NULL вместо вычисления следующего значения последовательности и ее вставки в соответствующий столбец. Таким образом, как я выяснил, если вы указываете NULL для postgres, предполагается, что вы действительно хотите вставить NULL в этот столбец, независимо от того, имеет ли он значение по умолчанию (я пришел из ORACLE, который имеет другое поведение).
Я открыт для любого решения по этому вопросу, будь то в базе данных или в RoR:
либо есть способ исключить атрибуты из ActiveRecordsave
или есть способ изменить значение столбца перед вставкой с помощью триггераили есть способ генерировать эти порядковые номера в RoRили любым другим способом, пока он работает :-)Заранее спасибо.