Method: Concen::GridFile#store

Defined in:
app/models/concen/grid_file.rb

#store(content, filename) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'app/models/concen/grid_file.rb', line 44

def store(content, filename)
  grid = Mongo::Grid.new(Mongoid.database)

  # First, delete if a GridFS file already exists.
  # There is no update.
  grid.delete(self.grid_id) if self.grid_id

  original_filename = filename.dup
  file_extension = File.extname(original_filename).downcase
  content_type = MIME::Types.type_for(original_filename).first.to_s

  # Pre generate ObjectId for the new GridFS file.
  grid_id = BSON::ObjectId.new

  filename = File.basename(original_filename, file_extension).downcase.parameterize.gsub("_", "-")
  filename = "#{grid_id.to_s}-#{filename}#{file_extension}"

  if grid.put(content, :_id => grid_id, :filename => filename, :content_type => content_type, :safe => true)
    self.update_attributes(:grid_id => grid_id, :filename => filename, :original_filename => original_filename)
  else
    return false
  end
end