Настройка конфигурации Rails 3 для attr_accessible/protected

Я только что потратил довольно много времени, пытаясь решить проблему с виртуальными атрибутами в моей модели. Оказалось, я просто забыл добавить его в attr_accesible в своей модели. Конечно, я должен был поймать это раньше или лучше начать все усилия, добавив его в attr_accessible в первую очередь.

Чтобы этого больше не повторилось, есть ли параметр конфигурации, который я могу пометить, чтобы создать исключение при разработке, если я попытаюсь массово назначить что-то и проверить это, когда оно защищено/недоступно? Я знаю, что могу использовать набор config.active_record.whitelist_attributes = true, чтобы потребовать белый список для всех, но мой вопрос больше касается индивидуальных атрибутов.

Строка выше, например, не предупреждает меня, если у меня есть модель с атрибутом attr_accessible :name, а затем добавить :nickname (виртуальный или нет) и попытаться массово назначить ее с проверкой присутствия=>true. Я хочу, чтобы он предупредил меня, что я пытался проверить защищенный атрибут с помощью массового назначения.


person Yuri    schedule 13.03.2012    source источник


Ответы (1)


В Rails 3.2 есть опция конфигурации для поднятия ActiveModel::MassAssignmentSecurity::Error в этом случае.

config.active_record.mass_assignment_sanitizer = :strict

См. примечания к выпуску Rails 3.2 и коммит в Rails

person iltempo    schedule 13.03.2012
comment
Для Rails ‹ 3.2 вы можете использовать что-то вроде этого: gist.github.com/2027920 - person Martin T.; 13.03.2012
comment
рельсы 3.1 действительно там, где я нахожусь. Спасибо. - person Yuri; 20.03.2012