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

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

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

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

1 ответ

Решение

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

config.active_record.mass_assignment_sanitizer = :strict

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

Другие вопросы по тегам