Carrierwave: ошибка с model.id в store_path - PullRequest
       4

Carrierwave: ошибка с model.id в store_path

3 голосов
/ 16 сентября 2011

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

@message = Message.create!
my_uploader = PhotoUploader.new
photo = open(image_url)
@message[:photo] = my_uploader.store!(photo)
@message[:photo] = my_uploader.filename
@message.save!

PhotoUploader:

def store_dir
  Rails.env.production? ? (primary_folder = "production") : (primary_folder = "test")
  "#{primary_folder}/media/#{model.id}" 
end

Класс сообщения:

class Message < ActiveRecord::Base
  attr_accessible :content, :photo, :user_id
  mount_uploader :photo, PhotoUploader
end

model.id возвращаетошибка в пути хранения.Модель равна нулю даже после ее сохранения, а файл сохраняется в #{primary_folder}/media

1 Ответ

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

Я думаю, что вы не звоните store! из модели, поэтому model.id не работает, потому что model это nil

Это, вероятно, сделает это за вас:

@message = Message.create!
photo = open(image_url)
@message.photo = PhotoUploader.new
@message.photo.store!(photo)
@message.photo = @message.photo.filename
@message.save!

Я попробовал это в консоли rails, и @message[:photo].store!(photo) выдал ту же ошибку, но @message.photo.store!(photo) сработало.

...