2011-12-27 4 views
24

나는 Ruby on Rails 튜토리얼에 의해 Rails를 배우고 있습니다. Michael Hartl 저 나는 내 레일 프로젝트에 대한 RSpec에 테스트를 실행하려면 다음 명령을 실행해야하는 section 3.2.2 (Test Driven Development)에있어 : ​​ActiveRecord :: Base : Class (NoMethodError)에 대해 정의되지 않은 메소드 'mass_assignment_sanitizer ='

bundle exec rspec spec/ 

그러나 그것은 작동하지 않습니다. 대신에이 오류가 얻을 :

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

내가 rspecchanging my Gemfile를 다시 설치 시도했다, 그러나 아무것도 정의되지 않은 메서드 오류를 진정시킨다 없습니다!

+0

아, 또한'rspec spec /'을 실행하려고하면'command not found' 오류가납니다. –

+0

슬래시없이 시도하십시오. 'rspec spec'. (* just thinking *) –

+0

불행하게도 나는 여전히 슬래시가없는 동일한 오류를 얻는다. –

답변

69

레일즈 3.2 RC1에서 다운 그레이드 했습니까? 당신의 development.rb에서 다음 두 줄을 주석 : M818의 대답이 문제를 해결할 수 있지만 코드에서 다른 곳에 사용되지 않는 방법을 사용 tyring 경우

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

이것은 3.2에서 3.1.2로 다운 그레이드 한 후 완벽하게 작동했습니다! –

+2

TS는 rspec을 사용하기 때문에 development.rb 대신 test.rb의 행을 주석으로 처리해야합니다. – henghonglee

+2

Rails 3.2에서 4.2로 업그레이드 할 때 이와 동일한 문제가 있었고 수정되었습니다. – andrewcockerham

1

, 당신은 여전히 ​​오류를 얻을 수 있습니다.

같은 문제가 있었는데 그 중 일부는 오류를 제거했지만 그 중 일부는 사용하지 않았고 attr_accessible은 같은 오류를주었습니다.

내가 원하지 않을 때 4.0으로 업데이트 된 'active_record'보석으로 밝혀졌습니다. 나는 대부가 응용 프로그램을 사용하고 있기 때문에, 나는 Gemfile에서이 작업을 수행했다 : 모든 문제를 해결하고 내가 database.rb에 줄을 주석 할 필요가 없었다

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

.

관련 문제