2011-12-27 14 views
24

Uczę się Railsów z niesamowitym Ruby on Rails Tutorial autorstwa Michaela Hartla. Jestem na section 3.2.2 (Test Driven Development), w którym należy uruchomić następujące polecenie, aby uruchomić rspec testy dla mojego projektu szyn:Niezdefiniowana metoda `mass_assignment_sanitizer = 'dla ActiveRecord :: Base: Class (NoMethodError)

bundle exec rspec spec/ 

Ale to nie działa. Zamiast otrzymuję ten błąd:

/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) 

próbowałam reinstalacji rspec i changing my Gemfile, ale nic nie zaspokaja się niezdefiniowany błąd metody!

+0

Aha, również, gdy próbuję uruchomić 'spec spec.Rspec /' otrzymuję błąd 'command not found'. –

+0

spróbuj bez ukośnego ukośnika. "Specyfikacja rspec". (* tylko myślenie *) –

+0

Niestety nadal otrzymuję ten sam błąd bez slasha. –

Odpowiedz

69

Czy obniżono wersję z Rails 3.2 RC1? Komentarz następujące dwa wiersze z development.rb:

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

To działało idealnie dla mnie po zmianie z wersji 3.2 na 3.1.2! –

+2

od czasu, gdy TS używa rspec, powinien komentować linię w test.rb zamiast development.rb – henghonglee

+2

Miał ten sam problem i naprawił podczas aktualizacji z Rails 3.2 do 4.2 – andrewcockerham

1

Chociaż odpowiedź m818 będzie rozwiązać ten problem, można nadal pojawiają się błędy, jeśli są tyring się gdzie indziej stosować metody przestarzałe w kodzie.

Miałem ten sam problem, komentując te linie pozbyłem się kilku błędów, ale nie wszystkie z nich, gdziekolwiek korzystałem attr_accessible dały mi ten sam błąd.

Okazało się, że jest to klejnot "active_record", który został zaktualizowany do wersji 4.0, kiedy nie chciałem tego. Ponieważ używam aplikacji Padrino, musiałem to zrobić w Gemfile:

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

To rozwiązuje wszystkich problemów i nie mam do ustosunkowania się linii w database.rb.

Powiązane problemy