ArgumentError:使用activerecord-sqlserver-adapter升级到Rails 3.1后,参数数量错误(3个为2)

Mat*_*ere 5 sql-server activerecord ruby-on-rails ruby-on-rails-3

升级到Rails 3.1后,任何ActiveRecord调用都会产生以下结果:

ArgumentError: wrong number of arguments (3 for 2)
from /Users/username/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-sqlserver-adapter-3.0.3/lib/active_record/connection_adapters/sqlserver/database_statements.rb:185:in `select'
from /Users/username/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc1/lib/active_record/connection_adapters/abstract/database_statements.rb:9:in `select_all'
from /Users/username/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc1/lib/active_record/connection_adapters/abstract/query_cache.rb:62:in `select_all'
from /Users/username/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc1/lib/active_record/base.rb:469:in `find_by_sql'
from /Users/username/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc1/lib/active_record/relation.rb:106:in `to_a'
from /Users/username/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc1/lib/active_record/relation/finder_methods.rb:155:in `all'
from /Users/username/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc1/lib/active_record/base.rb:440:in `all'
from (irb):1
from /Users/username/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.1.0.rc1/lib/rails/commands/console.rb:44:in `start'
from /Users/username/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.1.0.rc1/lib/rails/commands/console.rb:8:in `start'
from /Users/username/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.1.0.rc1/lib/rails/commands.rb:40:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
Run Code Online (Sandbox Code Playgroud)

其他人遇到这个问题?

wie*_*ann 11

检查你的gemfile,你需要最新的mysql2 gem for rails 3才能工作:

更换

gem 'mysql2',  '0.2.7'
Run Code Online (Sandbox Code Playgroud)

gem 'mysql2',  '>=0.3'
Run Code Online (Sandbox Code Playgroud)

并运行"捆绑安装",你应该很高兴


Met*_*lls 5

您还需要更新到sql server适配器的主分支.它将是最终的3.1版本.适配器的3.0版本适用于3.0轨道.所以你的适配器已经过时了.