Как создать файл в carrierwave - PullRequest
1 голос
/ 11 января 2012

Я работаю над приложением, которое позволяет пользователям создавать собственные водяные знаки для документов. Я хотел бы хранить изображения водяных знаков с помощью carrierwave.

Пока что изображение создается, но атрибут model.image не создается / сохраняется с помощью carrierwave. Помогите?

class Watermark < ActiveRecord::Base

mount_uploader :image, MarkImageUploader
before_save :textToImage
def textToImage
  img = MiniMagick::Image.open("#{Rails.root}/public/images/blank.png")
  img.combine_options do |c|
   c.gravity 'Center'
   c.draw "rotate 315 text 50,-375 '#{self.text}'"
   c.font '-*-helvetica-*-r-*-*-125-*-*-*-*-*-*-2'
   c.fill("#dddddd")
 end
 self.image = img
end
end 

1 Ответ

2 голосов
/ 13 января 2012

Оказывается, вы можете назначить файл столбцу carrierwave в контроллере:

  @watermark.image =  File.open("#{Rails.root}/public/images/blank.png")

, а затем обработать добавление текста в загрузчике:

process :addText 
  def addText 
    t = model.text
    manipulate! do |img|
      img.combine_options do |cmd|
      cmd.gravity 'Center'
      cmd.fill("lightgray")
      cmd.draw "rotate 325 text 85,-30 '#{t.upcase}'"
      cmd.font "#{Rails.root}/public/images/fonts/Vera.ttf"  
      cmd.pointsize '60' 
    end
    result = img  
  end
end
...