qweewq
@qweewq
ruby, ruby on rails, devops

Можно ли в CarrierWave в одной модели хранить оригинал картинки, а в другой — версии?

Можно ли в CarrierWave в одной модели хранить оригинал картинки, а в другой — версии?



И как передать сохранённую картинку во вторую модель?



Пример:

class Photo < ActiveRecord::Base<br>
  attr_accessible :image, :remote_image_url<br>
  has_many :crops<br><br>
  mount_uploader :image, ImageUploader<br>
end




class Crop < ActiveRecord::Base<br>
  attr_accessible :preview, :x, :y, :w, :h<br>
  belongs_to :photo<br><br>
  mount_uploader :preview, PreviewUploader<br><br>
  before_save :crop<br><br>
  def crop<br>
    preview.recreate_versions! if x.present?<br>
  end<br>
end
  • Вопрос задан
  • 3460 просмотров
Решения вопроса 1
qweewq
@qweewq Автор вопроса
ruby, ruby on rails, devops
Оказывается, всё просто:
class Crop < ActiveRecord::Base
  attr_accessible :preview, :x, :y, :w, :h
  belongs_to :photo
  mount_uploader :preview, PreviewUploader
  
  # здесь была ошибка - если before_save, то картинки не разделяются на папки по model.id
  after_save :crop
  
  def crop
    preview.recreate_versions! if x.present?
  end
end


Чтобы создать Crop к картинке Photo:
photo = Photo.find(1)
photo.crops.create(x:1,y:1,w:1,h:1,preview: photo.image) 
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Mox
Team Lead, RoR, React/React Native
Может быть вопрос не в тему, но в чем смысл юзания и появления CarrierWave, когда уже давно был Paperclip?

Просто я вижу что народ его периодически использует и с моей точки зрения всегда — ну просто гемороя больше, и все.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы