## photo_meta.rb module PhotoMeta def self.new(data) return YAML.load(data) end end ## photo.rb class Photo < ActiveRecord::Base has_attachment :storage => :file_system composed_of :meta, :class_name => 'PhotoMeta', :mapping => [%w(meta_data to_yaml)] after_resize do |record,img| if record.meta_data.blank? record.meta = MiniExiftool.new(record.temp_path, :composite => true) record.caption = record.meta.headline record.description = record.meta.description record.tag_list = record.meta.keywords end end end