Недавно я пытался добавить код errors.add_to_base в середине некоторой логики модели и удивлялся, почему, на мой взгляд, он не появляется, повторяя все ошибки. Затем я наткнулся на это письмо, которое объясняет, почему: http://groups.google.com/group/rubyonrails-talk/browse_thread/thread/e045ec1dead1ff06?pli=1
Тогда возникает вопрос: как добавить ошибки с помощью add_to_base, если нет смысла помещать их в метод validate? У меня сложная логика. Модель должна общаться с отношением has_many, которое имеет свои собственные отношения, которые проходят через множество условий, чтобы выяснить, имеет ли смысл смысл запроса. Ничто не может быть легко привязано к методу проверки.
Единственное, что я могу сделать, - это создать переменную экземпляра и передать все ошибки в виде строк, пока я выполняю свою сложную логику. После этого я могу выполнить команду validate для массива и отправить эти ошибки в базовый объект. Кажется, что это немного неубедительно, а не в Rails.
Суть в сообществе Rails в том, что сложная логика, даже если логика охватывает несколько моделей, должна быть в одном конкретном методе проверки модели? Как это обрабатывается, когда проверка полностью сложна и может охватывать несколько моделей?