Rails 3: Model.all => NoMethodError: неопределенный метод 'accept' для nil: NilClass - PullRequest
5 голосов
/ 15 февраля 2012

Я пытаюсь построить приложение Rails на основе уже существующей базы данных MySQL.Я создал проект rails, правильно настроил файл database.yml и создал одну модель User, соответствующую моей таблице users в db.Когда я запускаю консоль rails, чтобы проверить ее, я получаю следующее:

 > User.all
(32.4ms)  SHOW TABLES
(34.9ms)  describe `users`
NoMethodError: undefined method `accept' for nil:NilClass
from /home/richard/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract/database_statements.rb:7:in `to_sql'
from /home/richard/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract/database_statements.rb:16:in `select_all'
from /home/richard/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract/query_cache.rb:63:in `select_all'
from /home/richard/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/querying.rb:38:in `block in find_by_sql'
from /home/richard/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/explain.rb:40:in `logging_query_plan'
from /home/richard/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/querying.rb:37:in `find_by_sql'
from /home/richard/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/relation.rb:170:in `exec_queries'
from /home/richard/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/relation.rb:159:in `block in to_a'
from /home/richard/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/explain.rb:33:in `logging_query_plan'
from /home/richard/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/relation.rb:158:in `to_a'
from /home/richard/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/relation/finder_methods.rb:159:in `all'
from /home/richard/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/querying.rb:5:in `all'
from (irb):1
from /home/richard/.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.1/lib/rails/commands/console.rb:47:in `start'
from /home/richard/.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.1/lib/rails/commands/console.rb:8:in `start'
from /home/richard/.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.1/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'1.9.3-p0 :002 > ^C

Есть идеи, почему это может быть?Насколько я знаю, я соблюдаю соглашение rails: я создал модель User, соответствующую таблице с именем users, уже находящейся в базе данных, первичным ключом которой является целочисленное поле id.

Ответы [ 2 ]

4 голосов
/ 18 апреля 2012

У меня была похожая проблема с MySQL после обновления до rails 3.2.2.

Это то, что я сделал, чтобы исправить это.

rvm gem install mysql2
In GemFile remove old MySQL gem and add - gem ‘mysql2' 
bundle install
bundle update activerecord-mysql2-adapter
bundle update mysql2

затем перезапустите сервер rails.

4 голосов
/ 16 февраля 2012

Просто была такая же проблема.Сузили его до проблемы, связанной с MySQL, поскольку это происходило только в промежуточной среде (MySQL), а не в среде разработки (sqlite3).Исправлено это путем обновления mysql2 с версии 0.2.7 до 0.3.11.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...