class Zephyrus::Base

Public Class Methods

field( name, options = {} ) click to toggle source
# File lib/zephyrus/resources/base.rb, line 11
def field( name, options = {} )
  
  self.fields[ name.to_sym ] = options.merge( name: name )
  
  class_eval(
    "def #{name}(); " +
    "@#{name}.is_a?( FalseClass ) ? @#{name} : (" +
       "@#{name} || " +
         ( options[ :default ].nil? ?
            "nil" :
            ( options[ :default ].is_a?( String ) ? 
                "'#{options[ :default ]}'" : 
                  "#{options[ :default ]}" ) ) + ");" +
    "end;" +
    " " +
    "attr_writer :#{name};",
    __FILE__, 
    __LINE__
  )

end
has_many( name, options = {} ) click to toggle source
# File lib/zephyrus/resources/base.rb, line 40
def has_many( name, options = {} )  
  define_method name do 
    self.instance_variable_get( "@_#{name}" ) || options[ :default ] || []
  end
end
has_one( name, options = {} ) click to toggle source
# File lib/zephyrus/resources/base.rb, line 33
def has_one( name, options = {} )
  define_method name do 
    associations = self.instance_variable_get( "@_#{name.to_s.pluralize}" )
    associations.present? ? associations.first : options[ :default ]
  end
end
inherited( subclass ) click to toggle source
# File lib/zephyrus/resources/base.rb, line 7
def inherited( subclass )
  subclass.fields = {}.merge( self.fields )
end
new( attributes = {}, associations = {} ) { |self| ... } click to toggle source
# File lib/zephyrus/resources/base.rb, line 54
def initialize( attributes = {}, associations = {} )
  self.type_name = self.class.name.gsub( /Zephyrus::/, '' ).underscore
  attributes.each do | key, value |
    send( "#{key}=", value ) if respond_to?( "#{key}=" )
  end
  associations.each do | key, value |
    self.instance_variable_set( "@_#{key}", value )
  end
  yield self if block_given?
end