活动管理员回滚:“验证失败:已经收到电子邮件”

时间:2011-12-27 20:56:10

标签: ruby-on-rails-3 rollback activeadmin rails-migrations

我正在使用postgresql后端在Rails 3.1.3中开始一个项目。

我生成了一些模型,然后添加了 Active Admin gem。 稍后我决定组合2个模型,并希望回滚到开头,这样我就可以删除一个模型并使用正确的模式重新启动迁移。

我打字:

rake db:rollback step=10

当它中止回滚时,它完全符合 Active Admin 位:

$ rake db:rollback
==  DeviseCreateAdminUsers: reverting =========================================
rake aborted!
An error has occurred, this and all later migrations canceled:

Validation failed: Email has already been taken

Tasks: TOP => db:rollback

我没有添加任何用户,因此这可能是'admin@example.com'帐户。

的Gemfile

source 'http://rubygems.org'

gem 'rails', '3.1.3'

gem 'pg'
gem 'json'
gem 'activeadmin'
gem 'sass-rails',   '~> 3.1.5'
gem 'meta_search',    '>= 1.1.0.pre'
gem "paperclip", :git => "git://github.com/thoughtbot/paperclip.git"
gem 'mechanize'

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'less-rails-bootstrap'
  gem 'coffee-rails', '~> 3.1.1'
  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'

3 个答案:

答案 0 :(得分:0)

你是如何分两步进行10步回滚的?你提出的问题有点不明确,很难给你一个好的答案。除了指向你这条信息

http://en.wikibooks.org/wiki/Ruby_on_Rails/ActiveRecord/Migrations#Managing_Migrations

我建议您检查所有迁移

AdminUser.create

语句。您可能还想使用rails控制台手动删除AdminUser。

答案 1 :(得分:0)

在回滚之前运行rake db:reset

答案 2 :(得分:0)

devise_create_admin_users迁移在migrate:up上创建一个默认用户,然后尝试在rollback / migrate:down上再次创建它。因此验证错误,因为电子邮件已经存在。

只需注释掉'AdminUser.create!'在回滚之前,然后在回滚时取消注释。