2012-02-15 20 views
5

Estoy tratando de construir una aplicación Rails alrededor de una base de datos MySQL preexistente. Creé el proyecto de rieles, configuré el archivo database.yml correctamente y creé un modelo, User, para corresponder a la tabla de mis usuarios en el db. Cuando ejecuto la consola de rieles para probarlo sin embargo, esto es lo que me sale:Rails 3: Model.all => NoMethodError: método indefinido 'accept' for nil: NilClass

> 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 

Cualquier idea de por qué esto podría ser? Por lo que sé, estoy siguiendo la convención de los rieles: hice un modelo de Usuario para que se corresponda con una tabla llamada usuarios que ya están en el DB, cuya clave primaria es un campo entero llamado id.

+0

¿Tiene alguna columna llamada 'visitante'? – shingara

+0

@shingara No, yo no, ¿por qué? –

+0

porque es una llamada variable 'visitor' es nil en stacktrace. Así que puede ser el problema – shingara

Respuesta

4

Acabo de tener el mismo problema. Lo redujo a ser un problema relacionado con MySQL ya que estaba sucediendo solo en el entorno de ensayo (MySQL) y no en el desarrollo (sqlite3). Se solucionó actualizando el mysql2 de la versión 0.2.7 a la 0.3.11.

+0

Esto funcionó para mí. Editado Gemfile para eliminar la versión '<0.3'. Luego se llamó 'bundle update mysql2' y se volvió a crear la base de datos con' rake db: drop' seguido de 'rake --trace db: setup'. – peterept

+0

Estoy usando 0.3.11 en una aplicación que no es de Rails y sigo teniendo este problema. –

+1

@BenHamill, también estoy teniendo este problema con 0.3.11, no-Rails. Lo resolvió quitando activerecord-mysql2-adapter de mi gemspec. –

4

Tuve un problema similar con MySQL después de actualizar a los rieles 3.2.2.

Esto es lo que hice para arreglarlo.

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

luego reinicie el servidor de sus raíles.

Cuestiones relacionadas