2014-12-08 4 views
0

В рельсах консоли ..находкой ArgumentError "неверное число аргументов (1 для 0)"

Physician.find(1285849521) приводит

ArgumentError: wrong number of arguments (1 for 0) 
    from /Users/tim/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/activerecord-4.2.0.beta4/lib/active_record/connection_adapters/postgresql/database_statements.rb:160:in `initialize' 
    from /Users/tim/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/activerecord-4.2.0.beta4/lib/active_record/connection_adapters/postgresql/database_statements.rb:160:in `new' 
    from /Users/tim/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/activerecord-4.2.0.beta4/lib/active_record/connection_adapters/postgresql/database_statements.rb:160:in `substitute_at' 
    from /Users/tim/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/activerecord-4.2.0.beta4/lib/active_record/relation/query_methods.rb:989:in `block in create_binds' 
    from /Users/tim/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/activerecord-4.2.0.beta4/lib/active_record/relation/query_methods.rb:987:in `each' 
    from /Users/tim/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/activerecord-4.2.0.beta4/lib/active_record/relation/query_methods.rb:987:in `each_with_index' 
    from /Users/tim/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/activerecord-4.2.0.beta4/lib/active_record/relation/query_methods.rb:987:in `create_binds' 
    from /Users/tim/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/activerecord-4.2.0.beta4/lib/active_record/relation/query_methods.rb:962:in `build_where' 
    from /Users/tim/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/activerecord-4.2.0.beta4/lib/active_record/relation/query_methods.rb:586:in `where!' 
    from /Users/tim/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/activerecord-4.2.0.beta4/lib/active_record/relation/query_methods.rb:576:in `where' 
    from /Users/tim/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/activerecord-4.2.0.beta4/lib/active_record/querying.rb:10:in `where' 
    from /Users/tim/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/activerecord-4.2.0.beta4/lib/active_record/core.rb:150:in `block (2 levels) in find' 
    from /Users/tim/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/activerecord-4.2.0.beta4/lib/active_record/statement_cache.rb:80:in `call' 
    from /Users/tim/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/activerecord-4.2.0.beta4/lib/active_record/statement_cache.rb:80:in `create' 
    from /Users/tim/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/activerecord-4.2.0.beta4/lib/active_record/core.rb:149:in `block in find' 
    from /Users/tim/.rbenv/versions/2.1.5/lib/ruby/2.1.0/mutex_m.rb:73:in `synchronize' 
... 13 levels... 
    from /Users/tim/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/activesupport-4.2.0.beta4/lib/active_support/dependencies.rb:246:in `load' 
    from /Users/tim/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/activesupport-4.2.0.beta4/lib/active_support/dependencies.rb:246:in `block in load' 
    from /Users/tim/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/activesupport-4.2.0.beta4/lib/active_support/dependencies.rb:237:in `load_dependency' 
    from /Users/tim/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/activesupport-4.2.0.beta4/lib/active_support/dependencies.rb:246:in `load' 
    from /Users/tim/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/spring-1.1.3/lib/spring/commands/rails.rb:6:in `call' 
    from /Users/tim/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/spring-1.1.3/lib/spring/command_wrapper.rb:38:in `call' 
    from /Users/tim/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/spring-1.1.3/lib/spring/application.rb:180:in `block in serve' 
    from /Users/tim/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/spring-1.1.3/lib/spring/application.rb:153:in `fork' 
    from /Users/tim/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/spring-1.1.3/lib/spring/application.rb:153:in `serve' 
    from /Users/tim/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/spring-1.1.3/lib/spring/application.rb:128:in `block in run' 
    from /Users/tim/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/spring-1.1.3/lib/spring/application.rb:122:in `loop' 
    from /Users/tim/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/spring-1.1.3/lib/spring/application.rb:122:in `run' 
    from /Users/tim/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/spring-1.1.3/lib/spring/application/boot.rb:18:in `<top (required)>' 
    from /Users/tim/.rbenv/versions/2.1.5/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require' 
    from /Users/tim/.rbenv/versions/2.1.5/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require' 

и конечно ..

Physician.find() Результаты в «ActiveRecord :: RecordNotFound: Не удалось найти Врач без ИД «

Мой врач.rb:

class Physician < ActiveRecord::Base 
    self.table_name = "t_phys" 
    self.primary_key = "sln" 
end 

Я использую устаревшие postgres db, таблица t_phys имеет естественный ключ sln, который является 10-значным целым числом. В db есть врач с sln 1285849521 (целое число в методе find выше), которое я знаю, потому что Physician.all() работает правильно, и это первая запись, которая отображается.

Что я делаю неправильно? Как я могу заставить метод find работать правильно? Я только начинаю с рельсов снова, вероятно, где-то ошибка новичка. Цените помощь!

Более подробно, когда я добрался до локального хоста: 3000/врачей/1285849521, страница предоставляет:

ArgumentError in PhysiciansController#show 

Wrong number of arguments (1 for 0) 

Extracted source (around line #160):     

159  def substitute_at(column, index) 
160   Arel::Nodes::BindParam.new "$#{index + 1}" 
161  end 
162 
163  def exec_query(sql, name = 'SQL', binds = []) 

Я могу предоставить полную трассировку стека, если это необходимо.

+2

Может быть ошибка в ActiveRecord 4.2 beta 4. Пробовали ли вы идти вперед (похоже, что Rails 4.2 rc2) или наоборот, что-то более стабильное, как Rails 4.1? –

+0

Я обновил до 4.2 rc2 и теперь имею другое, более перспективное «Не удалось найти врача с ошибкой« sln »= 1285849521». Работая над отладкой сейчас, спасибо! –

+1

@ToddAgulnick: Вы должны ответить на этот вопрос. :) –

ответ

1

Кажется, что это должно сработать, но мне интересно, если пользовательский первичный ключ все еще возится с find.

Может быть, это фон поможет подтвердить один путь или другой:

http://ruby-journal.com/how-to-override-default-primary-key-id-in-rails/

+0

Да, мне все равно нужно еще больше почитать об этом, спасибо за ссылку, проходя через нее сейчас. –

0

Благодаря комментарий Тодда Agulnick в выше, я обновил в Rails 4.2 RC2 и ошибка ушла. Я столкнулся с новой ошибкой, которую я решил и выходит за рамки этого вопроса. Спасибо Тодду!

+1

Добро пожаловать. Я чувствую, что здесь есть основополагающий трюизм, что-то вроде «неуловимых проблем всегда спрятаться там, где вы не смотрите». В этом случае, поскольку вы снова вернулись в Rails, вы, естественно, поняли, что проблема была вашей ошибкой. Так что, конечно, это была проблема с Rails. Рад слышать, что ты работаешь. –

Смежные вопросы