Join GitHub today
GitHub is home to over 20 million developers working together to host and review code, manage projects, and build software together.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
|Failed to load latest commit information.|
Versions ======== If you are using Rails 2.3.8 or other version < 3, you have to use the version 1.1.x of this plugin, for Rails 3 you need to use the version 1.2.x or master of this plugin. ClassTableInheritance 1.2.1 =========================== 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 :products 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 :books, :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