public
Description: PassiveRecord provides ActiveRecord-like behavior for static, non-database models.
Homepage: http://artofmission.com/passive_record/index.html
Clone URL: git://github.com/artofmission/passive_record.git
artofmission (author)
Thu May 28 15:31:04 -0700 2009
commit  3f7188f94833d125d7803c6fb93746e28a4750fd
tree    a1cc4dbb4623e1905bac51d4891385a0b7dcfac8
parent  c81b3410b935ec18a0d245cda00086620d4dbaea
name age message
file .gitignore Loading commit data...
file MIT-LICENSE Thu Oct 02 11:52:21 -0700 2008 Extracted plugin [artofmission]
file README.rdoc
file Rakefile
file init.rb Tue May 26 12:25:02 -0700 2009 Enabled subclass inheritance for PassiveRecord ... [artofmission]
directory lib/ Thu May 28 15:31:04 -0700 2009 Made associations class_inheritable_accessor. [artofmission]
directory rdoc/ Tue May 26 12:25:02 -0700 2009 Enabled subclass inheritance for PassiveRecord ... [artofmission]

PassiveRecord

PassiveRecord provides ActiveRecord-like behavior for static, non-database models.

PassiveRecord was developed by Art of Mission, Inc. for Sharp Sync, a new product by Ministry Centered Technologies

Installation

Download PassiveRecord from Github: github.com/artofmission/passive_record

Install using Git Submodules:

  git submodule add http://github.com/artofmission/passive_record vendor/plugins/passive_record
  git submodule init
  git submodule update

Install with Rails’ plugin installer

  ./script/plugin install git://github.com/artofmission/passive_record.git

Example

  class Name < PassiveRecord::Base
    define_fields [:first_name, :middle_name, :last_name]
  end

…will create a new Name model with id, address, and location attributes.

  class Person < PassiveRecord::Base
    has_many :names
  end

  @person = Person.new(:names => [Name.new(:first_name => "Dima", :last_name => "Dozen")])

This would a Person object that has many names. You can now access the names hash just like you would an ActiveRecord object.

  @person.names #=> [#<Name:0x2031824 @last_name="Dozen", @first_name="Dima">]

You can serialize a PassiveRecord object into another database object for storage:

  class Address < PassiveRecord::Base
    define_fields [:street, :city, :state, :postal_code, :country]
  end

  class Company < ActiveRecord
    serialize :address
  end

  @company.address = Address.new(:street1 => "123 4th St", :city => "Wellington", :country => "NZ")

Resources for Non-ActiveRecord models

Due Credit

Contributors

Copyright © 2008 Ryan Heneise, released under the MIT license