Rails 5.2.6集成Active Admin后执行AdminUser.create!报rails aborted错误如何解决
问题根因
你出现报错的核心原因是执行方式错误:你将AdminUser.create!这条Ruby ActiveRecord操作代码直接作为rails命令的参数执行了,Rails会将你传入的内容识别为Rake任务去查找,自然找不到对应的任务,就抛出了"Don't know how to build task"的错误,和Active Admin、Devise的配置无关,也不需要额外修改配置。
正确创建管理员的两种方案
- 方案一:通过Rails控制台临时创建
- 先在项目根目录执行命令进入Rails控制台:
rails c- 控制台加载完成后,输入创建代码执行即可:
AdminUser.create!(email: "admin@gmail.com", password: "password", password_confirmation: "password") - 方案二:写入种子文件长期复用
- 打开项目下的
db/seeds.rb文件,添加如下代码:
AdminUser.create!(email: "admin@gmail.com", password: "password", password_confirmation: "password")- 执行种子数据执行命令即可完成创建:
rails db:seed - 打开项目下的
注意事项
- 如果执行创建时报验证错误,大概率是你项目的Devise配置了密码复杂度规则,调整传入的
password符合规则即可,和创建方式无关。 - 生产环境不要使用示例中的弱密码,创建完成后及时修改账号密码,避免安全风险。
- 可以在Rails控制台执行
AdminUser.exists?(email: "admin@gmail.com")验证创建结果,返回true即代表创建成功。
内容的提问来源于stack exchange,提问作者Magus
相关产品推荐
相关产品推荐

