Sha256: d717738d8961779b03a04798fc375f8497d492fe158e8b10b79519ec19f2f222

Contents?: true

Size: 1 KB

Versions: 37

Compression:

Stored size: 1 KB

Contents

module Videojuicer
  module Resource
    module Relationships
      module BelongsTo
   
        def self.included(base)
          base.extend(ClassMethods)
        end
        
        module ClassMethods
          
          def belongs_to(name, options={})
            options = {
              :class=>name.to_s.capitalize,
              :foreign_key=>"#{name}_id"
            }.merge(options)
            
            define_method name do
              id = self.send(options[:foreign_key])
              klass = (options[:class].is_a?(String))? Videojuicer.const_get(options[:class]) : options[:class]
              return nil unless id
              begin
                return klass.get(id)
              rescue Videojuicer::Exceptions::NoResource
                return nil
              end
            end
            
            define_method "#{name}=" do |arg|
              self.send("#{options[:foreign_key]}=", arg.id)
            end
          end
          
        end
        
      end
    end
  end
end

Version data entries

37 entries across 37 versions & 2 rubygems

Version Path
videojuicer-vj-sdk-0.1.12 lib/videojuicer/resource/relationships/belongs_to.rb
vj-sdk-0.8.2 lib/videojuicer/resource/relationships/belongs_to.rb
vj-sdk-0.8.0.1 lib/videojuicer/resource/relationships/belongs_to.rb
vj-sdk-0.7.14 lib/videojuicer/resource/relationships/belongs_to.rb
vj-sdk-0.7.13 lib/videojuicer/resource/relationships/belongs_to.rb
vj-sdk-0.7.11 lib/videojuicer/resource/relationships/belongs_to.rb
vj-sdk-0.7.10 lib/videojuicer/resource/relationships/belongs_to.rb
vj-sdk-0.7.9 lib/videojuicer/resource/relationships/belongs_to.rb
vj-sdk-0.7.8 lib/videojuicer/resource/relationships/belongs_to.rb
vj-sdk-0.7.7 lib/videojuicer/resource/relationships/belongs_to.rb
vj-sdk-0.7.6 lib/videojuicer/resource/relationships/belongs_to.rb
vj-sdk-0.7.5 lib/videojuicer/resource/relationships/belongs_to.rb
vj-sdk-0.7.4 lib/videojuicer/resource/relationships/belongs_to.rb
vj-sdk-0.7.3 lib/videojuicer/resource/relationships/belongs_to.rb
vj-sdk-0.7.2 lib/videojuicer/resource/relationships/belongs_to.rb
vj-sdk-0.7.1 lib/videojuicer/resource/relationships/belongs_to.rb
vj-sdk-0.7.0 lib/videojuicer/resource/relationships/belongs_to.rb
vj-sdk-0.6.9 lib/videojuicer/resource/relationships/belongs_to.rb
vj-sdk-0.6.8 lib/videojuicer/resource/relationships/belongs_to.rb
vj-sdk-0.6.7 lib/videojuicer/resource/relationships/belongs_to.rb