Paperclip未及时保存文件

时间:2012-11-06 00:59:31

标签: ruby-on-rails paperclip elasticsearch tire

我不知道我做了什么或改变了什么,因为之前有效。

我有一个模型Entry,我使用Paperclip将文件document附加到其中。现在,由于一些奇怪的原因,我一直在

Errno::ENOENT in EntriesController#create
No such file or directory - /var/www/capsf-web/public/assets/entries/test.pdf

我猜测在Paperclip将文件保存到我已经尝试编码文件的目录之前。这是Entry的样子。我正在使用ElasticSearch的附件映射器,这就是我编码的原因。

class Entry < ActiveRecord::Base
  include Tire::Model::Search
  include Tire::Model::Callbacks

  has_and_belongs_to_many :categories
  has_and_belongs_to_many :subcategories
  belongs_to :entry_type
  has_attached_file :document,
                    :url  => "/assets/entries/:basename.:extension",
                    :path => ":rails_root/public/assets/entries/:basename.:extension"

  before_post_process :image?

  validates_presence_of :entry_type

  attr_accessible :description, :title, :url, :category_ids, :subcategory_ids, :entry_type_id, :document

  mapping do
    indexes :title
    indexes :description
    indexes :categories do
      indexes :name
    end
    indexes :subcategories do
      indexes :name
    end
    indexes :entry_type
    indexes :document, :type => 'attachment'
  end

  def to_indexed_json
   #to_json( methods: [:category_name, :subcategory_name, :entry_type_name])
    {
    :title          => title,
    :description    => description,
    :categories     => categories.map { |c| { :name => c.name}},
    :subcategories  => subcategories.map { |s| { :name => s.name}},
    :entry_type     => entry_type_name,
    :document       => attachment
    }.to_json
  end
  def image?
    !(document_content_type =~ /^image.*/).nil?
  end

  def attachment
    if document.present?
      path_to_document = Rails.public_path+"/assets/entries/#{document_file_name}"
      Base64.encode64(open(path_to_document) { |pdf| pdf.read})
#If I comment out the line above everything works just fine.

    end
  end


end

0 个答案:

没有答案