Rails и attr_accessible: есть ли способ вызвать исключение, если не назначаемый по массе атрибут назначен по массе? - PullRequest
8 голосов
/ 13 августа 2010

Есть ли способ заставить рельсы выдавать ошибку, если предпринята попытка массово назначить атрибуты, которые не разрешены attr_accessible?

Это было бы удобно при разработке, чтобы напомнить мне, почему моя новая блестящая модель не работает, а также хорошо войти в систему для обнаружения вредоносной активности.

Я использую рельсы 2.3.8, но, вероятно, скоро перейду на 3.

Ответы [ 3 ]

6 голосов
/ 13 ноября 2011

Начиная с Rails 3.2, это больше не требует monkeypatching - rails теперь обеспечивает такое поведение.Поместите это в development.rb и test.rb :

config.active_record.mass_assignment_sanitizer = :strict
2 голосов
/ 16 января 2011

Я бы предложил что-то похожее на проект Bento, включенное в их приложение Rails .

Они создают инициализатор Rails в config / initializer /, а затем переопределяют соответствующий метод в классе ActiveModel, чтобы вызвать ошибку MassAssignmentError (в непроизводственной среде).

0 голосов
/ 13 января 2011

Я не уверен, что это сработает, но вы можете написать тест, чтобы проверить, является ли ваш объект «response_to (: непредсказуемым_аттром)». Затем вы можете попытаться принудительно кормить его этим атрибутом

.

Alex

...