Недавно я добавил гем Active Admin в свое приложение rails (с использованием rails 5.2.6), я заставил его работать с администратором по умолчанию, и он работает как задумано. Но я не могу добавить новых администраторов с помощью AdminUser.create!(email: "admin@gmail.com", password: "password", password_confirmation: "password"), так как получаю ошибку rails aborted, а затем Don't know how to build task 'AdminUser.create!(email: "admin@gmail.com", password: "password", password_confirmation: "password").

Я уже пробовал использовать rails db:migrate и запускать семена. Также я использую драгоценный камень разработки.

Полная трассировка:

    rails aborted!
Don't know how to build task 'AdminUser.create!(email: example@gmail.com, password: password, password_confirmation: password)' (See the list of available tasks with `rails --tasks`)
/var/lib/gems/2.7.0/gems/rake-13.0.6/lib/rake/task_manager.rb:59:in `[]'
/var/lib/gems/2.7.0/gems/rake-13.0.6/lib/rake/application.rb:159:in `invoke_task'
/var/lib/gems/2.7.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `block (2 levels) in top_level'
/var/lib/gems/2.7.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `each'
/var/lib/gems/2.7.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `block in top_level'
/var/lib/gems/2.7.0/gems/rake-13.0.6/lib/rake/application.rb:125:in `run_with_threads'
/var/lib/gems/2.7.0/gems/rake-13.0.6/lib/rake/application.rb:110:in `top_level'
/var/lib/gems/2.7.0/gems/railties-5.2.6/lib/rails/commands/rake/rake_command.rb:23:in `block in perform'
/var/lib/gems/2.7.0/gems/rake-13.0.6/lib/rake/application.rb:186:in `standard_exception_handling'
/var/lib/gems/2.7.0/gems/railties-5.2.6/lib/rails/commands/rake/rake_command.rb:20:in `perform'
/var/lib/gems/2.7.0/gems/railties-5.2.6/lib/rails/command.rb:48:in `invoke'
/var/lib/gems/2.7.0/gems/railties-5.2.6/lib/rails/commands.rb:18:in `<main>'
/var/lib/gems/2.7.0/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
/var/lib/gems/2.7.0/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
/var/lib/gems/2.7.0/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
/var/lib/gems/2.7.0/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
/var/lib/gems/2.7.0/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
/home/magus/Desktop/Proyecto ing software/grupo-56/bin/rails:9:in `<top (required)>'
/var/lib/gems/2.7.0/gems/spring-2.1.1/lib/spring/client/rails.rb:28:in `load'
/var/lib/gems/2.7.0/gems/spring-2.1.1/lib/spring/client/rails.rb:28:in `call'
/var/lib/gems/2.7.0/gems/spring-2.1.1/lib/spring/client/command.rb:7:in `call'
/var/lib/gems/2.7.0/gems/spring-2.1.1/lib/spring/client.rb:30:in `run'
/var/lib/gems/2.7.0/gems/spring-2.1.1/bin/spring:49:in `<top (required)>'
/var/lib/gems/2.7.0/gems/spring-2.1.1/lib/spring/binstub.rb:11:in `load'
/var/lib/gems/2.7.0/gems/spring-2.1.1/lib/spring/binstub.rb:11:in `<top (required)>'
/usr/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:72:in `require'
/usr/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:72:in `require'
/home/magus/Desktop/Proyecto ing software/grupo-56/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'

Как я уже сказал, все остальные функции ActiveAdmin работают, как задумано, просто я не могу создавать новых администраторов.

Что я делаю не так / мог забыть сделать? Заранее спасибо.

1
Magus 23 Ноя 2021 в 06:54

1 ответ

Лучший ответ

Есть несколько способов добавить этого администратора в базу данных:

  1. rails console - Просто откройте консоль и выполните AdminUser.create!(...).
  2. seeds.rb - откройте файл db/seeds.rb и вставьте AdminUser.create!(...). Затем запустите rake db:seed. Обратите внимание, что запуск rake db:seed несколько раз создаст этого администратора несколько раз - лучше всего иметь какие-то проверки или вместо этого использовать AdminUser.find_or_create_by(...).
  3. rake task - создайте файл rake в lib/tasks, имя не важно, но оно должно заканчиваться на .rake (например: update.rake)
task :add_admin do
  AdminUser.find_or_create_by(email: "admin@gmail.com", password: "password", password_confirmation: "password")
end

Запустите его с помощью rake add_admin.

Если вы хотите, чтобы этот администратор был только для себя, вашего локального компьютера, используйте консольный подход, в противном случае выберите два других, но убедитесь, что задачи с граблями идемпотент.

0
razvans 23 Ноя 2021 в 10:06
Благодаря тонну! Второй метод сработал без проблем! :)
 – 
Magus
24 Ноя 2021 в 03:02