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