rails custom validator - добавить к ошибкам в модели или контроллере? - PullRequest
1 голос
/ 17 ноября 2011

Я вижу, что пользовательские валидаторы используются в моделях (хорошо), но я также вижу, что сами валидаторы добавляют к объекту ошибки записи.
например я вижу (измененный пример)

class Title < ActiveRecord::Base
   # implement the method called during validation
   def validate_each(record, attribute, value)
     record.errors[attribute] << 'must be Mr / Mrs / Dr.' unless ['Mr.', 'Mrs.', 'Dr.'].include?(value)
   end
end

Это похоже на состояние, которое должно выполняться в контроллере, и проверка должна просто возвращать true / false, но, возможно, нет.

Ответы [ 2 ]

2 голосов
/ 17 ноября 2011

Я склоняюсь к этому шаблону:

errors.add[:name] << :invalid_honorific

Где ошибка, установленная моделью, является символом (действующим больше как код ошибки), который затем обрабатывается слоем вида, .yml файлычего угодноЭто позволяет избежать добавления слишком большого количества материала для представления в модель.

2 голосов
/ 17 ноября 2011

Я думаю, что это будет в каждом конкретном случае. В общем, сообщения о проверке действительно не происходят в контроллере вообще. Когда вы используете постоянный валидатор, вы можете по-разному определять сообщение, манипулируя файлами .yml, и для этого вы настраиваете вещи и добавляете значения в соответствии с моделью, а не контроллером.

На самом деле, я бы предложил всегда помещать сообщения, которые являются собственными, в файлы locales .yml

Я вижу аргумент для размещения более общих сообщений об ошибках в контроллере.

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