Да.
Ортогональные проблемы, как безопасность, лучше всего сделаны с перехватом стиля AOP. Сделано ли это автоматически (через что-то как контейнер внедрения зависимости) или вручную неважно до конца цель.
Один пример: "перед/после того, как" атрибутами в xUnit.net (проект с открытым исходным кодом я работаю) является формой перехвата метода стиля AOP. Вы украшаете свои методы тестирования этими атрибутами, и незадолго до и после того метода тестирования выполнения, Ваш код называют. Это может использоваться для вещей как установка базы данных и откат результатов, изменение контекста защиты в который тестовые прогоны, и т.д.
Другой пример: атрибуты фильтра в ASP.NET MVC также действуют как специализированные перехватчики метода стиля AOP. Один, например, позволяет Вам говорить, как необработанные ошибки нужно рассматривать, если они происходят в Вашем методе действия.
Много контейнеров внедрения зависимости, включая замок Windsor и Единицу, поддерживают это поведение или "в поле" или с помощью расширений.
Вы можете сделать следующее, чтобы проверить, действительна ли Модель:
@user = User.new
if @user.valid?
#do things
Если вы хотите увидеть, что это за ошибки, вы можете сделать:
@user = User.new
unless @user.valid?
@user.errors.each {|k, v| puts "#{k.capitalize}: #{v}"}
Вызвать ".valid?" запускает ваши проверки, помещая все ваши ошибки в объект ActiveRecord :: Errors, к которому можно получить доступ, как я сделал в приведенном выше примере. Попробуйте примеры в консоли, чтобы почувствовать это, если хотите.
Запуск метода #valid?
для объекта запустит все проверки и заполнит структуру ошибок
.
dude = Person.new
unless dude.valid?
# Examine errors
end