我正在使用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'
答案 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!'在回滚之前,然后在回滚时取消注释。