2010-08-13 4 views
8

attr_accessible에서 허용되지 않는 속성을 대량 할당하려고 시도하면 레일에 오류가 발생하게 할 수 있습니까?레일 및 attr_accessible : 대량 지정이 불가능한 속성이 대량 할당 된 경우 예외를 발생시키는 방법이 있습니까?

내 빛나는 새로운 모델이 작동하지 않는 이유와 악의적 인 활동을 탐지하기 위해 생산에 로그인하는 것이 좋은 이유를 상기시키는 개발에 유용 할 것입니다.

나는 레일 2.3.8를 사용하고 있지만, 아마 곧 3.

답변

6

레일즈 3.2에서는 더 이상 monkeypatching이 필요하지 않습니다. 이제 레일즈가이 동작을 제공합니다.development.rbtest.rb이 넣어 없습니다 :

config.active_record.mass_assignment_sanitizer = :strict 
0

로 마이그레이션됩니다이 일하는 것이 있는지 확실하지 않습니다,하지만 당신이 볼 수있는 테스트를 작성할 수 있다면 개체 "respond_to (: unexpected_attr) ". 이 알렉스

2

attr에 내가 something like the Bento project has incorporated into their Rails app을 제안 할 것이라고 그런 다음 피드를 강제로 시도 할 수 있습니다.

config/initializers /에서 Rails Initializer를 만든 다음 ActiveModel 클래스에서 적절한 메소드를 재정 의하여 MassAssignmentError를 발생시킵니다 (프로덕션 환경이 아닌 환경에서).

+0

monkeypatching가 더 이상 필요하지, 야호! 'config.active_record.mass_assignment_sanitizer = : strict' –