Sha256: 475d3a0faccd4d297ef4e73087dd39f4ad308dcc2c7d486eda65ba72813f288a
Contents?: true
Size: 995 Bytes
Versions: 6
Compression:
Stored size: 995 Bytes
Contents
module MongoMapperExt class File < GridFS::GridStore attr_reader :id, :attributes def initialize(owner, attrs = {}) @owner = owner @id = attrs.delete("_id") class_eval do attrs.each do |k,v| define_method(k) do v end end end super(@owner.class.database, attrs["filename"], "r", :root => @owner.collection.name) end def [](name) @attributes[name.to_s] end def self.fetch(owner, filename) db = owner.class.database finder = nil if defined?(MongoMapper::FinderOptions) finder = MongoMapper::FinderOptions else finder = MongoMapper::Query end criteria, options = finder.new(owner.class, :filename => filename, :metadata => {:_id => owner.id}, :limit => 1).to_a obj = db.collection("#{owner.collection.name}.files").find(criteria, options).next_document if obj self.new(owner, obj) end end end end
Version data entries
6 entries across 6 versions & 1 rubygems