Class: ActiveResource::Schema

Inherits:
Object
  • Object
show all
Defined in:
activeresource/lib/active_resource/schema.rb

Overview

:nodoc:

Constant Summary collapse

KNOWN_ATTRIBUTE_TYPES =

attributes can be known to be one of these types. They are easy to cast to/from.

%w( string text integer float decimal datetime timestamp time date binary boolean )

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeSchema

The internals of an Active Resource Schema are very simple - unlike an Active Record TableDefinition (on which it is based). It provides a set of convenience methods for people to define their schema using the syntax:

schema do
  string :foo
  integer :bar
end

The schema stores the name and type of each attribute. That is then
read out by the schema method to populate the schema of the actual
resource.


25
26
27
# File 'activeresource/lib/active_resource/schema.rb', line 25

def initialize
  @attrs = {}
end

Instance Attribute Details

#attrsObject

An array of attribute definitions, representing the attributes that have been defined.



11
12
13
# File 'activeresource/lib/active_resource/schema.rb', line 11

def attrs
  @attrs
end

Instance Method Details

#attribute(name, type, options = {}) ⇒ Object

Raises:

  • (ArgumentError)


29
30
31
32
33
34
35
36
37
38
# File 'activeresource/lib/active_resource/schema.rb', line 29

def attribute(name, type, options = {})
  raise ArgumentError, "Unknown Attribute type: #{type.inspect} for key: #{name.inspect}" unless type.nil? || Schema::KNOWN_ATTRIBUTE_TYPES.include?(type.to_s)

  the_type = type.to_s
  # TODO: add defaults
  #the_attr = [type.to_s]
  #the_attr << options[:default] if options.has_key? :default
  @attrs[name.to_s] = the_type
  self
end