Module: Imaginable::Model

Defined in:
lib/imaginable/model.rb

Defined Under Namespace

Modules: ClassMethods, InstanceMethods

Instance Method Summary collapse

Instance Method Details

#has_imagination(column, options = {}) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/imaginable/model.rb', line 7

def has_imagination(column, options = {})
  extend ClassMethods
  include InstanceMethods
  
  class_attribute :_imaginable_settings
  
  self._imaginable_settings = { :column => column }
  self._imaginable_settings.update(options) if options.is_a?(Hash)
  
  define_method "has_#{column}?" do
    uuid = self["#{column}_uuid"]
    token = self["#{column}_token"]
    
    return false unless uuid && token
    
    !uuid.empty? && !token.empty?
  end
  
  define_method column do
    uuid = self["#{column}_uuid"]
    token = self["#{column}_token"]
    version = self["#{column}_version"]
    Image.new(uuid, token, version)
  end
  
  after_initialize :update_imaginable_version
end