v2026.3.0-latestからのアップグレード中に問題が発生しました。rake db:seed_fuタスクが002_groups.rbで実行された際に、以下のエラーで失敗します。
ActiveRecord::RecordInvalid: Validation failed: Name has already been taken. (ActiveRecord::RecordInvalid)
クラッシュは、シードデータが新しいシステムグループ(ID 4: anonymous および ID 5: logged_in_users)の初期化を試みる直前で発生します。
Rails コンソールで確認しました。手動チェックではバリデーションで失敗しますが、バリデーションをバイパスすると問題なくデータベースにレコードが保存されます。
# これは「Name has already been taken」で失敗します
g = Group.new(id: 4, name: "anonymous", automatic: true)
g.valid?
# これは正常に動作し、実際の競合がないことを証明します
g.save(validate: false)
この問題を回避するために、これらの新しいシステムグループを手動で作成しました。
ActiveRecord::Base.transaction do
g4 = Group.new(id: 4, name: "anonymous", automatic: true)
g4.save(validate: false)
g5 = Group.new(id: 5, name: "logged_in_users", automatic: true)
g5.save(validate: false)
end
これで、rake db:seed_fuを実行してもエラーなく完了します。
「いいね!」 2
RGJ
(Richard - Communiteq)
2
「私も!」ボタンはどこへ行ったのですか?
これは、既存のグループまたはユーザー(!!!)が anonymous という名前で存在する場合に発生します。
インポート後に anonymous をユーザー名として使用していたフォーラムが多数あります。
コミットには以下のように記載されています。
この PR は、anonymous_users と logged_in_users という 2 つの新しい自動グループを導入します
しかし、実際にはそのグループは _users を含まずに anonymous と呼ばれることになったようです。
これは残念なことです。なぜなら
anonymous という名前は、それがユーザーグループなのか単一のユーザーなのかを不明確にするため
_users がなければ、既存のグループやユーザーとの競合リスクが大幅に高まるため
提案される解決策:
- グループを結局のところ
anonymous_users と命名する。これは logged_in_users と一貫性があり、競合リスクを劇的に低減します
- 少なくとも競合を検知し、エラーを返す代わりに既存のユーザーまたはグループをリネームする
「いいね!」 2
martin
(Martin Brennan)
5
これを調査しています。
この名前競合を処理するためのマイグレーションが存在するため、なぜ OP のケースで機能していないのか不明です:
マイグレーションを実行する前に、これを単独で実行していますか?
RGJ
(Richard - Communiteq)
6
現在のグループを確認する移行処理ですが、ユーザーとグループは名前空間を共有しており、ユーザーと同じ名前のグループを作成できないため、既存のユーザーも確認する必要があります。
martin
(Martin Brennan)
7
うーん、なるほど、それは確かに面倒ですね…これを処理するための PR を今すぐ作成します:
ご指摘の通り、これにより衝突の可能性が劇的に低下するはずです。anonymous_users という名前のユーザーがいるとはとても思えませんので、この名前変更を行う場合、自動チェックやマイグレーションは不要だと考えます。
「いいね!」 1
martin
(Martin Brennan)
8
「いいね!」 2
最初はいいえです。標準的なビルド再構築プロセス中にマイグレーションで失敗しており、それが最初に私の注意を引いたきっかけでした。その後、トラブルシューティングのために手動で rake タスクを実行していました。
「いいね!」 2
martin
(Martin Brennan)
13
よし、PR をマージしました。名前衝突の問題はこれで解決するはずです。
「いいね!」 1
RGJ
(Richard - Communiteq)
14
素晴らしいニュースですね!
また、修正を 2026.5 にもバックポートしていただけますでしょうか?