Как пернести изображения из одного сервиса в другой в Rails?

Здравствуйте, как правильно перенести имеющиеся изображения.
Изображения сохранены в pic в виде ссылок.
Сейчас использую данный код, проблема в том что это очень долго происходит и не все изображения сохраняются.
Использую Ruby on Rails, Mongoid, Attachinary и Cloudinary (для хранения изображений)
class User
  include Mongoid::Document

  has_attachment :image, accept: [:jpg, :png, :gif]

  field :pic, type: String

  before_update :migrate_images

  def migrate_images
    self.image_url = self.pic
  end
end


User.where(:pic.exists => true).all.each &:update
  • Вопрос задан
  • 101 просмотр
Пригласить эксперта
Ответы на вопрос 1
2ord
@2ord
продвинутый чайник
Долго, возможно, потому, что сначала берутся все User, а потом обновляются поштучно.
.all.each &:update

Вместо этого стоит использовать ActiveRecord update_all и специфично для Mongoid: https://www.rubydoc.info/github/mongoid/mongoid/ma...

.update_all({ "$set" => { image_url: "$pic" }})
(с синтаксисом Mongoid могу ошибаться)
Значения обновятся одним запросом...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы