2011-12-27 9 views
24

Estoy aprendiendo Rails con el impresionante Ruby on Rails Tutorial de Michael Hartl. Estoy en section 3.2.2 (Test Driven Development) en el que se necesita para ejecutar el siguiente comando para ejecutar las pruebas rspec para mi proyecto Rails:Método indefinido `mass_assignment_sanitizer = 'para ActiveRecord :: Base: Class (NoMethodError)

bundle exec rspec spec/ 

Pero no funciona. En lugar de eso sale este error:

/Users/mh/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/gems/1.9.1/gems/ 
activerecord-3.1.3/lib/active_record/base.rb:1088:in `method_missing': 
undefined method `mass_assignment_sanitizer=' for 
ActiveRecord::Base:Class (NoMethodError) 

He intentado reinstalar rspec y changing my Gemfile, pero nada aplaca el error de método no definido!

+0

Ah, también, cuando intento ejecutar 'espec. Rspec /' obtengo un error 'comando no encontrado'. –

+0

prueba sin barra inclinada. 'especificación rspec'. (* solo pensando *) –

+0

Lamentablemente sigo recibiendo el mismo error sin la barra. –

Respuesta

69

¿Ha bajado de Rails 3.2 RC1? Comentario las dos líneas siguientes de su development.rb:

config.active_record.mass_assignment_sanitizer = :strict 
config.active_record.auto_explain_threshold_in_seconds = 0.5 
+0

¡Esto funcionó perfectamente para mí después de bajar de 3.2 a 3.1.2! –

+2

ya que TS usa rspec, debería comentar la línea en test.rb en lugar de development.rb – henghonglee

+2

Tenía este mismo problema y se corrige al actualizar de Rails 3.2 a 4.2 – andrewcockerham

1

y las respuestas de M818 va a resolver el problema, es posible que aún obtener errores si está tyring utilizar métodos obsoletos en otras partes de su código.

que tenían el mismo problema, comentando aquellas líneas se deshizo de algunos errores, pero no todos ellos, en cualquier lugar que estaba usando attr_accessible me dio el mismo error.

Resultó ser la gema `active_record 'que se actualizó a 4.0 cuando no lo deseaba. Desde que estoy usando una aplicación Padrino, que tenía que hacer esto en el Gemfile:

gem 'activerecord', '= 3.2.12', :require => "active_record" 

Eso resuelto todos los problemas y yo no tenía que comentar las líneas en database.rb.

Cuestiones relacionadas