Ruby on Rails - Скрепка - Ограничьте количество загружаемых изображений - PullRequest
0 голосов
/ 07 декабря 2018

Вопрос: Как я могу ограничить количество изображений, загружаемых для класса «Picture», который принимает изображения, используя Paperclip?

У меня есть модель, в которой элементы имеют один ко многимОтношения с изображениями и изображениями имеют прикрепленный файл изображения, как показано в этом коде:

class Picture < ActiveRecord::Base
  belongs_to :item

  has_attached_file :images, styles: { large: "600x600>", medium: "300x300>", thumb: "100x100>" },

  validates_attachment_content_type :images, :content_type => /^image\/(jpg|jpeg|pjpeg|png|x-png|gif)$/, :message => 'file type is not allowed (only jpeg/png/gif images)'
end

Это класс Item:

class Item < ActiveRecord::Base
    has_many :pictures, :dependent => :destroy
end

Все с точки зрения загрузки работает отлично.Тем не менее, что я могу сделать, чтобы изменить модель изображения, чтобы принять максимум 4 загруженных изображения?Кроме того, возможно ли всплывающее окно с надписью «Вы можете загрузить не более четырех изображений»?

Какая еще информация вам нужна от меня?(Схема / Контроллер? Я не слишком заинтересован в их загрузке, учитывая, что это будет слишком много)

1 Ответ

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

Вы можете добавить пользовательский метод проверки в модели Item (чтобы каждый элемент мог иметь максимум 4 изображения)

https://guides.rubyonrails.org/active_record_validations.html#custom-methods

class Item < ActiveRecord::Base

  validate :only_4_pictures

  def only_4_pictures
    errors.add(:pictures, "You can't upload more than 4 pictures") if pictures.length > 4
  end

end

, что предотвратит объектсохранено.

Тогда способ отображения всплывающего окна зависит от кода представления, у вас будет доступ к объекту и ошибка с использованием object.errors [: pictures].

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