Sha256: 29e19318b0d4166fcb4c057704412076a04ed70add4ea3f22f923716278f6ecc

Contents?: true

Size: 641 Bytes

Versions: 3

Compression:

Stored size: 641 Bytes

Contents

module Paperdragon
  module Model
    def self.included(base)
      base.extend ClassMethods
    end

    module ClassMethods
      def processable(name, attachment_class=Attachment)
        include attachment_accessor_for(name, attachment_class)
      end

    private
      # Creates Avatar#image that returns a Paperdragon::File instance.
      def attachment_accessor_for(name, attachment_class)
        mod = Module.new do # TODO: abstract that into Uber, we use it everywhere.
          define_method name do
            attachment_class.new(self.image_meta_data, {:model => self})
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
paperdragon-0.0.4 lib/paperdragon/model.rb
paperdragon-0.0.3 lib/paperdragon/model.rb
paperdragon-0.0.2 lib/paperdragon/model.rb