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или любым другим способом, пока он работает :-)

Заранее спасибо.

Ответы на вопрос(2)

Ваш ответ на вопрос