Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

rall/hyperactiveresource

Open more actions menu
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HyperactiveResource
===================

v0.1

Many have said that ActiveResource is not really "complete". On the surface,
this means that some features that are documented aren't implemented. Digging a
little deeper, we find that some features that should exist don't.

Arguably, a "complete" ActiveResource would behave like ActiveRecord or, as the
rdoc for ActiveResource states "very similarly to Active Record".

Hyperactive Resource is MDL's extension to ActiveResource::Base written to
support our Patient Registry and goes a long way towards the goal of an
ActiveResource that behaves like ActiveRecord.

Features
 * Client side validations
 * Hooks for before_validate, before_save
 * Dynamic finders: find_by_X
 * save!
 * Awareness of associations between resources: belongs_to, has_many, has_one & columns
   * Patient.new.name returns nil instead of MethodMissing
   * Patient.new.races returns [] instead of MethodMissing
   * pat = Patient.new; pat.gender_id = 1; pat.gender #Will return find the gender obj
 * Resources can be associated with records
 * Records can be associated with records
 * ActiveRecord-like attributes= (updates rather than replaces)
 * ActiveRecord-like #load that doesn't #dup attributes (stores direct reference)
 * Supports saving resources that :include other resources via:
   * Nested resource saving (creating a patient will create their associated addresses)
   * Mapping associations ([:gender].id will serialize as :gender_id)

Example
=======

 1. Install the plugin via:

    cd path/to/rails_root/vendor/plugins
    git clone git://github.com/lukegalea/hyperactiveresource.git

 2. Create a HyperactiveResource where you would normally use ActiveResource
    and define the meta-data/associations that drive the dynamic magic:

    class Address < HyperactiveResource
      self.columns = [ :street_address, :city, :zipcode, :home_phone_number ]
      self.belong_tos = [ :country, :state ]
      self.has_manys = [ :people ]
    end

 3. Enjoy the magic

    address = Address.new
    address.country # nil instead of method_missing
    address.country_id = 5
    address.country #Returns Country.find(5)
  etc..

Copyright (c) 2008 Medical Decision Logic, released under the MIT license

About

HyperActiveResource extends ActiveResource so it works properly and behaves more like ActiveRecord

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
Morty Proxy This is a proxified and sanitized view of the page, visit original site.