Сохранение изображений с Carrierwave внутри работника ruby - PullRequest
2 голосов
/ 11 августа 2011

Я пытаюсь написать метод для хранения изображения из заданного URL-адреса внутри работника ruby.Это происходит вместе с моим приложением Rails, в котором я отображаю изображение объекта.Вот что я придумал:

def store(url)
    @object = Object.find(1)
    @object[:image] = CarrierWave::Uploader.store!(image_url)
end

Кажется, это не работает вообще.Есть какие-нибудь подсказки?Есть ли другой путь?

[EDIT]

Вот текущая ситуация:

def store
  @object = Object.find(1)
  my_uploader = ImageUploader.new

  image = open("http://twitpic.com/show/iphone/xxxx.jpg") 
# or for a local file:
  image = File.open(Rails.root.join('xxxx.png'))

  @object[:image] = my_uploader.store!(image)
  @object.save!
end

Имя файла в атрибуте [: image] по-прежнему неверно.Это дает "[: store_versions!]".Как получить правильное имя файла?

[EDIT2]

Получил правильное имя файла, добавив @artwork[:image] = my_uploader.filename перед сохранением.Но @object = Object.find(1) не сработает.Как мне получить доступ к классу Object, который находится в моем приложении rails, от рабочего?

Ответы [ 2 ]

1 голос
/ 17 сентября 2011

@object.image.store!(image) наконец-то сделал свою работу!

0 голосов
/ 11 августа 2011

Вы захотите создать новый объект загрузки и указать его в своем файле

image = File.open(Rails.root.join('path', 'to', 'file.png'))
@object[:image] = YourUploader.new(image)
...