Я установил гем paperclip для приложения Rails 3.Все отлично работает в режиме разработки.Однако при запуске в производственном режиме, если я загружаю файл и затем пытаюсь загрузить его снова, он загружает файл с правильным именем и расширением, но это пустой файл.При просмотре на сервере файл действительно загружается и находится в правильном каталоге.(У меня есть папка «uploads» в корне моего приложения.)
У кого-нибудь такое было?
Моя модель:
# app/models/document.rb
class Document < ActiveRecord::Base
belongs_to :kase
has_attached_file :document, :path => (Rails.root + "uploads/:class/:kase_id/:id").to_s, :url => ":class/:id"
validates_attachment_presence :document
validates_attachment_content_type :document, :content_type => [
'application/pdf',
'image/png',
'image/jpeg',
'image/pjpeg',
'text/plain'
]
end
Мой контроллер:
# app/controllers/documents_controller.rb
class DocumentsController < ApplicationController
respond_to :html
before_filter :initialize_kase # Sets the @kase instance
def show
@document = @kase.documents.find(params[:id])
send_file @document.document.path, :filename => @document.document_file_name, :content_type => @document.document_content_type
end
end
И мой инициализатор (устанавливающий заполнитель: kase_id, используемый в has_attached_file выше:
# config/initializers/paperclip.rb
Paperclip.interpolates('kase_id') do |attachment, style|
"kases/#{attachment.instance.kase.id.to_s}"
end
Вероятно, я должен также упомянуть, что я обращаюсь к этому как к вложенному контроллеру (/ kases / XX /документы / XX). Не уверен, оказывает ли это влияние или нет ...