属性Transactionを持つというモデルがあるとします。:transaction_codeその属性に、とは異なる可能性のあるシーケンス番号が自動的に入力されるようにしますid(たとえば、Transaction withid=1が持つ可能性がありますtransaction_code=1000)。
postgres でシーケンスを作成してから、そのシーケンスのtransaction_code列のデフォルト値を作成しようとしましたnextval。問題は、on RoR に値を割り当てない場合、@transaction.transaction_codeon RoR を発行する@transaction.saveと、次の SQL を実行しようとすることです。
INSERT INTO transactions (transaction_code) VALUES (NULL);
これが行うことは、シーケンスの nextval を計算して対応する列に挿入する代わりに、transaction_code を NULL にして、Transactions テーブルに新しい行を作成することです。したがって、私が知ったように、postgres に NULL を指定すると、デフォルト値に関係なく、その列に NULL を挿入する必要があると見なされます (動作が異なる ORACLE から来ています)。
データベースまたはRoRで行われる場合、私はこれに関するあらゆる解決策を受け入れます。
- ActiveRecord から属性を除外する方法があるか
save - または、トリガーを使用して挿入する前に列の値を変更する方法があります
- または、RoR 内でこれらのシーケンス番号を生成する方法があります。
- またはそれが機能する限り、他の方法:-)
前もって感謝します。