hamayuzinの日記

エンジニアとかデータサイエンティストとかやってます。あの時 あれやってたな的な備忘録にできれば。

【rails/uniq制約】uniq制約のあるカラムの値を入れ替えたい時どうしようか問題

とりあえずrailsの場合 uniq制約のあるカラムの値を入れ替えたい

例えば下記の場合 - seqがuniq制約ついている。

accounts テーブル

id name seq
1 hoge1 1
2 hoge2 2
3 hoge3 3

id = 1id = 3のseqを入れ替えたいとき どうしよう

Account.find(1).update(seq: 1) とかだと、uniq制約でもちろん落ちるよね

依存関係ないなら

destroy して insert すればいいよね

依存関係ある場合

だいたい依存関係あって、id変えれないよね。。。

更新前に、おもむろに、seq*-1して保存するとかかな