【rails/uniq制約】uniq制約のあるカラムの値を入れ替えたい時どうしようか問題
とりあえずrailsの場合 uniq制約のあるカラムの値を入れ替えたい
例えば下記の場合 - seqがuniq制約ついている。
accounts テーブル
id | name | seq |
---|---|---|
1 | hoge1 | 1 |
2 | hoge2 | 2 |
3 | hoge3 | 3 |
id = 1
とid = 3
のseqを入れ替えたいとき どうしよう
Account.find(1).update(seq: 1)
とかだと、uniq制約でもちろん落ちるよね
依存関係ないなら
destroy
して insert
すればいいよね
依存関係ある場合
だいたい依存関係あって、id
変えれないよね。。。
更新前に、おもむろに、seq*-1
して保存するとかかな