У меня есть сценарий, в котором я загружаю файлы динамически, используя ajax remotipart
, а затем я назначаю эти загруженные файлы любой модели. У меня есть такие настройки в загрузчике.
class DocumentUploader < CarrierWave::Uploader::Base
storage :file
def store_dir
"uploads/#{model.class.to_s.pluralize.underscore}/#{model.documentable_type.to_s.pluralize.underscore}/#{model.documentable_id}"
end
def extension_white_list
%w(doc pdf docx xls xlsx)
end
end
class Document < ActiveRecord::Base
mount_uploader :document, DocumentUploader
belongs_to :documentable, :polymorphic => true
validates :document, :presence => true
validates :description, :presence => true
end
class Post < ActiveRecord::Base
has_many :documents, :as=>:documentable
end
Когда я загружаю документ без указания источника documentable
, он загружает файлы в /uploads/documents/uploaded_file.doc
Но когда я назначаю этот документ какой-то другой модели, например
@post = Post.first
@post.documents << Document.last
@post.save
Сохраняет запись правильно, и когда получает URL-адрес файла, например @post.documents.first.document.url
, он дает URL-адрес, подобный этому /uploads/documents/posts/10212/uploaded_file.doc
, где файл не был доступен.
Как я могу обработать такое назначение уже существующих загрузок?