2011-08-09 31 views
7

Tôi đang trải qua một ngoại lệ trong khi làm một sự chuyển đổi cơ sở dữ liệu trong Rails 3.phương pháp xác định 'khách' cho Rails 3 db: di chuyển

undefined method `visitor' for #<ActiveRecord::ConnectionAdapters::Mysql2Adapter:0x00000103dea3d8> 

Sửa

Vui lòng kiểm tra giải pháp here .


Không xảy ra cho chuỗi visitor bên trong dự án của tôi vì vậy tôi bối rối.

Dưới đây là toàn bộ bãi:

$ rake db:migrate --trace 
** Invoke db:migrate (first_time) 
** Invoke environment (first_time) 
** Execute environment 
** Invoke db:load_config (first_time) 
** Invoke rails_env (first_time) 
** Execute rails_env 
** Execute db:load_config 
** Execute db:migrate 
rake aborted! 
undefined method `visitor' for #<ActiveRecord::ConnectionAdapters::Mysql2Adapter:0x00000103dea3d8> 
.rvm/gems/ruby-1.9.2-p180/gems/arel-2.1.5/lib/arel/tree_manager.rb:19:in `visitor' 
.rvm/gems/ruby-1.9.2-p180/gems/arel-2.1.5/lib/arel/tree_manager.rb:23:in `to_sql' 
.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc5/lib/active_record/migration.rb:562:in `get_all_versions' 
.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc5/lib/active_record/migration.rb:708:in `migrated' 
.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc5/lib/active_record/migration.rb:635:in `current_version' 
.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc5/lib/active_record/migration.rb:652:in `block in migrate' 
.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc5/lib/active_record/migration.rb:652:in `each' 
.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc5/lib/active_record/migration.rb:652:in `detect' 
.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc5/lib/active_record/migration.rb:652:in `migrate' 
.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc5/lib/active_record/migration.rb:545:in `up' 
.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc5/lib/active_record/migration.rb:526:in `migrate' 
.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc5/lib/active_record/railties/databases.rake:161:in `block (2 levels) in <top (required)>' 
.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/task.rb:205:in `call' 
.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/task.rb:205:in `block in execute' 
.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/task.rb:200:in `each' 
.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/task.rb:200:in `execute' 
.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain' 
.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize' 
.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/task.rb:151:in `invoke_with_call_chain' 
.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/task.rb:144:in `invoke' 
.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/application.rb:112:in `invoke_task' 
.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/application.rb:90:in `block (2 levels) in top_level' 
.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/application.rb:90:in `each' 
.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/application.rb:90:in `block in top_level' 
.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/application.rb:129:in `standard_exception_handling' 
.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/application.rb:84:in `top_level' 
.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/application.rb:62:in `block in run' 
.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/application.rb:129:in `standard_exception_handling' 
.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/application.rb:59:in `run' 
.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/bin/rake:32:in `<top (required)>' 
.rvm/gems/ruby-1.9.2-p180/bin/rake:19:in `load' 
.rvm/gems/ruby-1.9.2-p180/bin/rake:19:in `<main>' 
Tasks: TOP => db:migrate 
+1

Cảm ơn bạn! Điều này đã khiến tôi khốn khổ ... – Clay

+0

Hãy thêm giải pháp của bạn làm câu trả lời và chấp nhận nó. – iwasrobbed

+0

Cảm ơn bạn @iWasRobbed – lbz

Trả lời

3

Hình như một vấn đề với Arel 2.1.5; thêm gem "arel", "2.1.4" vào Gemfile có liên quan sẽ giải quyết được vấn đề.

Source

Các vấn đề liên quan