Сделать Active Storage has_one_attatched не нулевым - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть модель с активным хранилищем, настроенная с помощью has_one_attached, и некоторые пользователи нажали "Отправить", не добавив файл в форму. Прежде чем добавить проверку во внешний интерфейс, я хочу убедиться, что серверная часть отклонит запись, если у нее нет прикрепленного файла.

Как мне настроить модель, чтобы она не сохранялась, если в активном хранилище has_one_attached что-то есть?

1 Ответ

0 голосов
/ 05 декабря 2018

Я думаю, что на данный момент единственным вариантом будет следовать «обычному» пути: добавьте include ActiveModel::Validations и validates_with QwertieCustomValidator к вашей модели, создайте пользовательский валидатор под app/validators и проверьте, если record.attached_file.attached?, если нет, добавьте ошибки с: record.errors.add(:attached_file, 'no file was attached')

Если подумать, вам не нужно указывать валидатор в другом файле, я просто сделал это в своем проекте, чтобы соответствовать потоку адаптированного проекта. Кратчайший путь будет выглядеть так:

has_one_attached :attached_file

validate :check_file_presence

def check_file_presence
  errors.add(:attached_file, "no file added") unless attached_file.attached?
end

Надеюсь, это поможет вам.

...