Я установил драгоценный камень скрепки для приложения Rails 3. В режиме разработки все работает нормально. Однако при работе в производственном режиме, если я загружаю файл, а затем пытаюсь загрузить его снова, он загружает файл с правильным именем и расширением, но это пустой файл. При поиске на сервере файл загружается и находится в правильном каталоге. (У меня есть папка «Загрузки» в корне моего приложения.)
У кого-нибудь было такое?
Моя модель:
# 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/documents/XX). Не знаю, повлияет это или нет...