【问题标题】:Devise user generation failing设计用户生成失败
【发布时间】:2015-12-26 15:02:19
【问题描述】:

我正在构建我的第一个 Rails 应用程序。当我运行 rails server 并转到主页时,我收到此错误突出显示第 2 行:

ActiveRecord::PendingMigrationError

正在等待迁移。要解决此问题,请运行:bin/rake db:migrate RAILS_ENV=development

提取的源代码(在 #392 行附近):

def check_pending!(connection = Base.connection)
  raise ActiveRecord::PendingMigrationError if ActiveRecord::Migrator.needs_migration?(connection)
end

def load_schema_if_pending!

当我运行 rake db:migrate RAILS_ENV=development 时出现此错误

== 20151226141424 AddDeviseToUsers: migrating =================================
-- change_table(:users)
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

SQLite3::SQLException: duplicate column name: email: ALTER TABLE "users" ADD "email" varchar DEFAULT '' NOT NULL/var/lib/gems/2.2.0/gems/sqlite3-1.3.11/lib/sqlite3/database.rb:91:in `initialize'

Full text

我删除了 db/migrate 中的所有内容,然后再次运行 rails g devise userrake db:migrate。返回此错误

user@ubuntu:~/dev/ruby/rails/pinterested$ rails g devise user
      invoke  active_record
      create    db/migrate/20151226145516_add_devise_to_users.rb
      insert    app/models/user.rb
       route  devise_for :users
user@ubuntu:~/dev/ruby/rails/pinterested$ rake db:migrate
rake aborted!
ArgumentError: Invalid route name, already in use: 'new_user_session' 
You may have defined two routes with the same name using the `:as` option, or you may be overriding a route already defined by a resource with the same naming. For the latter, you can restrict the routes created with `resources` as explained here: 
http://guides.rubyonrails.org/routing.html#restricting-the-routes-created
/var/lib/gems/2.2.0/gems/actionpack-4.2.5/lib/action_dispatch/routing/route_set.rb:549:in `add_route'
/var/lib/gems/2.2.0/gems/actionpack-4.2.5/lib/action_dispatch/routing/mapper.rb:1562:in `add_route'
/var/lib/gems/2.2.0/gems/actionpack-4.2.5/lib/action_dispatch/routing/mapper.rb:1537:in `decomposed_match'
/var/lib/gems/2.2.0/gems/actionpack-4.2.5/lib/action_dispatch/routing/mapper.rb:1535:in `block in decomposed_match'
/var/lib/gems/2.2.0/gems/actionpack-4.2.5/lib/action_dispatch/routing/mapper.rb:1420:in `block (2 levels) in member'
/var/lib/gems/2.2.0/gems/actionpack-4.2.5/lib/action_dispatch/routing/mapper.rb:817:in `scope'
/var/lib/gems/2.2.0/gems/actionpack-4.2.5/lib/action_dispatch/routing/mapper.rb:1420:in `block in member'
/var/lib/gems/2.2.0/gems/actionpack-4.2.5/lib/action_dispatch/routing/mapper.rb:1666:in `with_scope_level'
/var/lib/gems/2.2.0/gems/actionpack-4.2.5/lib/action_dispatch/routing/mapper.rb:1416:in `member'
/var/lib/gems/2.2.0/gems/actionpack-4.2.5/lib/action_dispatch/routing/mapper.rb:1535:in `decomposed_match'
/var/lib/gems/2.2.0/gems/actionpack-4.2.5/lib/action_dispatch/routing/mapper.rb:1518:in `block in match'
/var/lib/gems/2.2.0/gems/actionpack-4.2.5/lib/action_dispatch/routing/mapper.rb:1508:in `each'
/var/lib/gems/2.2.0/gems/actionpack-4.2.5/lib/action_dispatch/routing/mapper.rb:1508:in `match'
/var/lib/gems/2.2.0/gems/actionpack-4.2.5/lib/action_dispatch/routing/mapper.rb:690:in `map_method'
/var/lib/gems/2.2.0/gems/actionpack-4.2.5/lib/action_dispatch/routing/mapper.rb:651:in `get'
/var/lib/gems/2.2.0/gems/devise-3.5.3/lib/devise/rails/routes.rb:374:in `block in devise_session'
/var/lib/gems/2.2.0/gems/actionpack-4.2.5/lib/action_dispatch/routing/mapper.rb:1199:in `block in resource'
/var/lib/gems/2.2.0/gems/actionpack-4.2.5/lib/action_dispatch/routing/mapper.rb:1677:in `block (2 levels) in resource_scope'
/var/lib/gems/2.2.0/gems/actionpack-4.2.5/lib/action_dispatch/routing/mapper.rb:817:in `scope'
/var/lib/gems/2.2.0/gems/actionpack-4.2.5/lib/action_dispatch/routing/mapper.rb:1677:in `block in resource_scope'
/var/lib/gems/2.2.0/gems/actionpack-4.2.5/lib/action_dispatch/routing/mapper.rb:1666:in `with_scope_level'
/var/lib/gems/2.2.0/gems/actionpack-4.2.5/lib/action_dispatch/routing/mapper.rb:1676:in `resource_scope'
/var/lib/gems/2.2.0/gems/actionpack-4.2.5/lib/action_dispatch/routing/mapper.rb:1198:in `resource'
/var/lib/gems/2.2.0/gems/devise-3.5.3/lib/devise/rails/routes.rb:373:in `devise_session'
/var/lib/gems/2.2.0/gems/devise-3.5.3/lib/devise/rails/routes.rb:263:in `block (4 levels) in devise_for'
/var/lib/gems/2.2.0/gems/devise-3.5.3/lib/devise/rails/routes.rb:263:in `each'
/var/lib/gems/2.2.0/gems/devise-3.5.3/lib/devise/rails/routes.rb:263:in `block (3 levels) in devise_for'
/var/lib/gems/2.2.0/gems/devise-3.5.3/lib/devise/rails/routes.rb:461:in `with_devise_exclusive_scope'
/var/lib/gems/2.2.0/gems/devise-3.5.3/lib/devise/rails/routes.rb:262:in `block (2 levels) in devise_for'
/var/lib/gems/2.2.0/gems/devise-3.5.3/lib/devise/rails/routes.rb:365:in `block in devise_scope'
/var/lib/gems/2.2.0/gems/actionpack-4.2.5/lib/action_dispatch/routing/mapper.rb:941:in `block in constraints'
/var/lib/gems/2.2.0/gems/actionpack-4.2.5/lib/action_dispatch/routing/mapper.rb:817:in `scope'
/var/lib/gems/2.2.0/gems/actionpack-4.2.5/lib/action_dispatch/routing/mapper.rb:941:in `constraints'
/var/lib/gems/2.2.0/gems/devise-3.5.3/lib/devise/rails/routes.rb:364:in `devise_scope'
/var/lib/gems/2.2.0/gems/devise-3.5.3/lib/devise/rails/routes.rb:261:in `block in devise_for'
/var/lib/gems/2.2.0/gems/devise-3.5.3/lib/devise/rails/routes.rb:237:in `each'
/var/lib/gems/2.2.0/gems/devise-3.5.3/lib/devise/rails/routes.rb:237:in `devise_for'
/home/user/dev/ruby/rails/pinterested/config/routes.rb:3:in `block in <top (required)>'
/var/lib/gems/2.2.0/gems/actionpack-4.2.5/lib/action_dispatch/routing/route_set.rb:434:in `instance_exec'
/var/lib/gems/2.2.0/gems/actionpack-4.2.5/lib/action_dispatch/routing/route_set.rb:434:in `eval_block'
/var/lib/gems/2.2.0/gems/actionpack-4.2.5/lib/action_dispatch/routing/route_set.rb:412:in `draw'
/home/user/dev/ruby/rails/pinterested/config/routes.rb:1:in `<top (required)>'
/var/lib/gems/2.2.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:268:in `load'
/var/lib/gems/2.2.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:268:in `block in load'
/var/lib/gems/2.2.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:240:in `load_dependency'
/var/lib/gems/2.2.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:268:in `load'
/var/lib/gems/2.2.0/gems/railties-4.2.5/lib/rails/application/routes_reloader.rb:40:in `block in load_paths'
/var/lib/gems/2.2.0/gems/railties-4.2.5/lib/rails/application/routes_reloader.rb:40:in `each'
/var/lib/gems/2.2.0/gems/railties-4.2.5/lib/rails/application/routes_reloader.rb:40:in `load_paths'
/var/lib/gems/2.2.0/gems/railties-4.2.5/lib/rails/application/routes_reloader.rb:16:in `reload!'
/var/lib/gems/2.2.0/gems/railties-4.2.5/lib/rails/application/routes_reloader.rb:26:in `block in updater'
/var/lib/gems/2.2.0/gems/activesupport-4.2.5/lib/active_support/file_update_checker.rb:75:in `call'
/var/lib/gems/2.2.0/gems/activesupport-4.2.5/lib/active_support/file_update_checker.rb:75:in `execute'
/var/lib/gems/2.2.0/gems/railties-4.2.5/lib/rails/application/routes_reloader.rb:27:in `updater'
/var/lib/gems/2.2.0/gems/railties-4.2.5/lib/rails/application/routes_reloader.rb:7:in `execute_if_updated'
/var/lib/gems/2.2.0/gems/railties-4.2.5/lib/rails/application/finisher.rb:69:in `block in <module:Finisher>'
/var/lib/gems/2.2.0/gems/railties-4.2.5/lib/rails/initializable.rb:30:in `instance_exec'
/var/lib/gems/2.2.0/gems/railties-4.2.5/lib/rails/initializable.rb:30:in `run'
/var/lib/gems/2.2.0/gems/railties-4.2.5/lib/rails/initializable.rb:55:in `block in run_initializers'
/var/lib/gems/2.2.0/gems/railties-4.2.5/lib/rails/initializable.rb:54:in `run_initializers'
/var/lib/gems/2.2.0/gems/railties-4.2.5/lib/rails/application.rb:352:in `initialize!'
/home/user/dev/ruby/rails/pinterested/config/environment.rb:5:in `<top (required)>'
/var/lib/gems/2.2.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:274:in `require'
/var/lib/gems/2.2.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:274:in `block in require'
/var/lib/gems/2.2.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:240:in `load_dependency'
/var/lib/gems/2.2.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:274:in `require'
/var/lib/gems/2.2.0/gems/railties-4.2.5/lib/rails/application.rb:328:in `require_environment!'
/var/lib/gems/2.2.0/gems/railties-4.2.5/lib/rails/application.rb:457:in `block in run_tasks_blocks'
Tasks: TOP => db:migrate => environment
(See full trace by running task with --trace)

它是由 routes.rb 中的两条 devise_for :users 行引起的。我删除了一行,运行rake db:migrate,又得到第一个错误。

【问题讨论】:

标签: ruby-on-rails ruby devise


【解决方案1】:

您可能不小心破坏了迁移。尝试手动删除 db,然后确保迁移中没有任何错误,然后重新运行 rake db.... 命令。如果您的迁移中有错误,请删除一个或手动修复它。

【讨论】:

  • 手动删除数据库是指使用rake db:drop吗?
猜你喜欢
  • 2014-12-21
  • 2010-09-07
  • 1970-01-01
  • 1970-01-01
  • 2012-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多