Sha256: 9089155d2c647f00159396063ee0a6d7b3185f2829498f802c0ead7ac79b07af

Contents?: true

Size: 2 KB

Versions: 4

Compression:

Stored size: 2 KB

Contents

ClassTableInheritance 1.1.0 BETA
================================

 This is an ActiveRecord plugin designed to allow 
 simple multiple table (class) inheritance.
 
 This plugin was inspired by:
 inherits_from plugin => http://github.com/rwl4/inherits_from and
 Multiple Table Inheritance with ActiveRecord => http://mediumexposure.com/multiple-table-inheritance-active-record/

How to install
=============

gem install class-table-inheritance

Example
=======

  # Migrations 

  create_table :product do |t|
    t.string :description, :null => false
	t.string :subtype # Only if you need access of both side see example
    t.decimal :price
    t.timestamps
  end
  
  create_table :book, :inherits => :product do |t|
    t.string :author, :null => false
  end
  
  create_table :videos, :inherits => :product do |t|
    t.string :year, :null => false
    t.string :genre, :null => false
  end

  # Models

  class Product < ActiveRecord::Base
	acts_as_superclass # only if you want top-down access.
  end

  class Book < ActiveRecord::Base
    inherits_from :product
  end

  class Video < ActiveRecord::Base
    inherits_from :product
  end

  book = Book.find(1)
  book.name => "Agile Development with Rails"
  book.author => "Dave Thomas"
  book.price => 19.00
  
  video = Video.find(2)
  video.name => "Inseption"
  video.year => "2010"
  video.genre => "SCI-FI" 
  video.price => 22.00
  
  book = Book.new
  book.name = "Hamlet"
  book.author = "Shakespeare, William"
  book.price => 14.00
  book.save

Top-down access (Polymorphic)
=============================

  if you want to access product and get field in the subclass do you need to create a field subtype:string in superclass and ad acts_as_superclass in superclass and now you can do like this.

  product = Product.find 1  # This is a Book instance.
  product.author

  product = Product.find 2 # This is a Video instance.
  product.genre

  
  if you need help contanct me: bfscordeiro (at) gmail.com .


Copyright (c) 2010 Bruno Cordeiro, released under the MIT license

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
class-table-inheritance-1.1.2 README
class-table-inheritance-1.2.0 README
class-table-inheritance-1.1.1 README
class-table-inheritance-1.1.0 README