Rails 2.3.5: Как добавить ошибку, если нет смысла помещать ее в валидацию? - PullRequest
0 голосов
/ 12 мая 2010

Недавно я пытался добавить код 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 в том, что сложная логика, даже если логика охватывает несколько моделей, должна быть в одном конкретном методе проверки модели? Как это обрабатывается, когда проверка полностью сложна и может охватывать несколько моделей?

1 Ответ

0 голосов
/ 12 мая 2010

Я не понимаю, почему не имеет смысла подвергать это проверке. Конечно, это то, что вы хотите сделать, должно быть в модели, поэтому вы должны поместить это в некоторый метод внутри модели. Затем просто добавьте:

validate :my_method

и все. Конечно, если my_method становится слишком сложным, разбейте его на несколько логических под-методов.

Если у вас много связанных объектов, вы должны поместить все проверки, принадлежащие этим объектам, в модели этих объектов, и при попытке сохранить «родительский» объект «дочерние» объекты также будут проверены с их проверками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...