1

我正在尝试在 Rails 4 下安装 ActiveAdmin 以生成我的管理面板。

我添加了 gem 并使用以下命令安装:

gem 'activeadmin', github: 'gregbell/active_admin'
bundle install
rails g active_admin:install              # creates the AdminUser class
rails g active_admin:install User         # uses an existing class

但是当我尝试迁移时出现错误:

$ rake db:migrate
==  AddDeviseToAdminUsers: migrating ==========================================
-- change_table(:admin_users)
rake aborted!
An error has occurred, this and all later migrations canceled:

SQLite3::SQLException: duplicate column name: email: ALTER TABLE "admin_users" ADD "email" varchar(255) DEFAULT '' NOT NULL/usr/local/rvm/gems/ruby-2.0.0-p247/gems/sqlite3-1.3.8/lib/sqlite3/database.rb:91:in `initialize'

github 上的 issue 753中所述,我将AddDeviseToAdminUsers迁移从更改change_table为 ,create_table但这会导致此错误:

==  AddDeviseToAdminUsers: migrating ==========================================
-- create_table(:admin_users)
rake aborted!

有人可以帮忙吗?

4

1 回答 1

1

您看到的异常是由于迁移与您现有的数据库结构冲突。您的 admin_users 表已经包含一个“电子邮件”列,这就是您看到错误的原因duplicate column name: email

您应该只运行一次active_admin:install生成器。使用干净的应用程序运行 ActiveAdmin 设置应该只涉及以下内容:

# Add the BETA gem with Rails 4 support. The ActiveAdmin master
# branch is still in heavy development.
gem 'activeadmin', github: 'gregbell/active_admin'

# Bundle
bundle install

# Setup ActiveAdmin 
rails g active_admin:install

对于更高级的情况,如果您已经有一个管理员用户的 ActiveRecord 模型,那么您将使用生成器的这个变体:rails g active_admin:install MyAdminUser

于 2013-11-12T14:17:29.627 回答