Module: Refinery::VimeoVideos::ActiveRecordExtension::ClassMethods

Defined in:
lib/refinerycms-vimeo-videos/active_record_extension.rb

Instance Method Summary collapse

Instance Method Details

#vimeo_video(field) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/refinerycms-vimeo-videos/active_record_extension.rb', line 11

def vimeo_video field
  class_eval <<-EOV

    def #{field}
      if self.new_record?
        self.#{field}_id
      else
        self.#{field}_id? ? VimeoMetaCache.find_or_create_by_vid(self.#{field}_id) : nil
      end
    end
  
    before_save :cache_vimeo_meta_for_#{field}
  
    def cache_vimeo_meta_for_#{field}
      if self.#{field}_id? and self.#{field}_id_changed?
        VimeoMetaCache.find_or_create_by_vid(self.#{field}_id)
      end
    end
    protected :cache_vimeo_meta_for_#{field}
  
  EOV
end