Возникла проблема при обновлении с версии 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)
Мне удалось преодолеть это препятствие, вручную создав эти новые системные группы:
Ваш скрипт миграции проверяет существующие группы. Однако он также должен проверять существующих пользователей, поскольку пользователи и группы находятся в едином пространстве имён, и нельзя создать группу с тем же именем, что и у пользователя.
Хм, ладно, это довольно раздражает… Сейчас создам PR для этого:
Что, как вы и говорите, должно значительно снизить вероятность конфликта. Я сильно сомневаюсь, что существует пользователь с именем anonymous_users, поэтому, если я сделаю это переименование, автоматическая проверка или миграция, думаю, не понадобятся.
Нет, изначально — нет. Ошибка возникала при миграциях в процессе стандартной пересборки, именно так она и была обнаружена, и я нашёл её причину. Затем я запускал задачу rake вручную для отладки.