lib/glebtv-mongoid-paperclip.rb in glebtv-mongoid-paperclip-0.1.0 vs lib/glebtv-mongoid-paperclip.rb in glebtv-mongoid-paperclip-0.2.0
- old
+ new
@@ -1,105 +2 @@
-# encoding: utf-8
-
-require "mongoid-paperclip/version"
-
-begin
- require "paperclip"
-rescue LoadError
- puts "Mongoid::Paperclip requires that you install the Paperclip gem."
- exit
-end
-
-##
-# the id of mongoid is not integer, correct the id_partitioin.
-Paperclip.interpolates :id_partition do |attachment, style|
- attachment.instance.id.to_s.scan(/.{4}/).join("/")
-end
-
-##
-# mongoid criteria uses a different syntax.
-module Paperclip
- module Helpers
- def each_instance_with_attachment(klass, name)
- class_for(klass).unscoped.where("#{name}_file_name".to_sym.ne => nil).each do |instance|
- yield(instance)
- end
- end
- end
-end
-
-##
-# The Mongoid::Paperclip extension
-# Makes Paperclip play nice with the Mongoid ODM
-#
-# Example:
-#
-# class User
-# include Mongoid::Document
-# include Mongoid::Paperclip
-#
-# has_mongoid_attached_file :avatar
-# end
-#
-# The above example is all you need to do. This will load the Paperclip library into the User model
-# and add the "has_mongoid_attached_file" class method. Provide this method with the same values as you would
-# when using "vanilla Paperclip". The first parameter is a symbol [:field] and the second parameter is a hash of options [options = {}].
-#
-# Unlike Paperclip for ActiveRecord, since MongoDB does not use "schema" or "migrations", Mongoid::Paperclip automatically adds the neccesary "fields"
-# to your Model (MongoDB collection) when you invoke the "#has_mongoid_attached_file" method. When you invoke "has_mongoid_attached_file :avatar" it will
-# automatially add the following fields:
-#
-# field :avatar_file_name, :type => String
-# field :avatar_content_type, :type => String
-# field :avatar_file_size, :type => Integer
-# field :avatar_updated_at, :type => DateTime
-# field :avatar_fingerprint, :type => String
-#
-module Mongoid
- module Paperclip
-
- ##
- # Extends the model with the defined Class methods
- def self.included(base)
- base.extend(ClassMethods)
- end
-
- module ClassMethods
-
- ##
- # Adds Mongoid::Paperclip's "#has_mongoid_attached_file" class method to the model
- # which includes Paperclip and Paperclip::Glue in to the model. Additionally
- # it'll also add the required fields for Paperclip since MongoDB is schemaless and doesn't
- # have migrations.
- def has_mongoid_attached_file(field, options = {})
-
- ##
- # Include Paperclip and Paperclip::Glue for compatibility
- unless self.ancestors.include?(::Paperclip)
- include ::Paperclip
- include ::Paperclip::Glue
- end
-
- ##
- # Invoke Paperclip's #has_attached_file method and passes in the
- # arguments specified by the user that invoked Mongoid::Paperclip#has_mongoid_attached_file
- has_attached_file(field, options)
-
- ##
- # Define the necessary collection fields in Mongoid for Paperclip
- field(:"#{field}_file_name", :type => String)
- field(:"#{field}_content_type", :type => String)
- field(:"#{field}_file_size", :type => Integer)
- field(:"#{field}_updated_at", :type => DateTime)
- field(:"#{field}_fingerprint", :type => String)
- end
-
- ##
- # This method is deprecated
- def has_attached_file(field, options = {})
- raise "Mongoid::Paperclip#has_attached_file is deprecated, " +
- "Use 'has_mongoid_attached_file' instead"
- end
- end
-
- end
-end
+require 'mongoid-paperclip'
\ No newline at end of file