Я стараюсь следовать http://api.rubyonrails.org/classes/ActiveModel/Validator.html, но куда мне положить
class MyValidator < ActiveModel::Validator def validate(record) if some_complex_logic record.errors[:base] = "This record is invalid" end end private def some_complex_logic # ... end end
Этот парень ставит их под app/validators/, что я и делал с тех пор, как увидел этот пост в блоге.
app/validators/
Добавьте этот класс в свой каталог lib, укажите его в вашей модели и включите в него.
Кроме того, вы также можете добавить его в каталог моделей вашего приложения.Также, как упомянул Шингара, вам нужно добавить
include ActiveModel::Validations validates_with MyValidator
в файл модели класса записи.