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