Sha256: cbad853c078b69ec01c69d71cceb2e39c76b8d28947b59ab50fa9b0bdb2d824a

Contents?: true

Size: 1.59 KB

Versions: 3

Compression:

Stored size: 1.59 KB

Contents

Acts As Realation
=================

Easy multi-table inheritance for rails.
With `acts_as_relation` models inherit parent model:

 * columns
 * validations
 * methods

Multi-table inheritance
-----------------------

Multi-table inheritance happens when each model in the hierarchy is a model all by itself
that corresponds to its own database table and can be queried and created individually.
The inheritance relationship introduces links between the child model and each of its
parents (via an automatically-created `has_one` associations).

Example
-------

Required columns on parent model name `parent1` are

 1. `parent1_type`
 2. `parent1_id`

generate models

    $ rails g model product name:string price:float product_type:string product_id:integer
    $ rails g model pen color:string

add some validations and instance methods

    class Product < ActiveRecord::Base
      validates_presence_of :name, :price
      
      def hello
        puts "Hello, My name is '#{name}', my price is $#{price}."
      end
    end

pen inherits from product

    class Pen < ActiveRecord::Base
      acts_as :product
    end

pen inhetits products validations and colomns

    p = Pen.new
    p.valid? => false
    p.errors => {:name=>["can't be blank"], :price=>["can't be blank"]}
     
pen inherits proudct methods

    pen = Pen.new(:name=>"Red Pen", :color=>:red, :price=>0.99)
    pen.hello => Hello, My name is 'Red Pen', my price is $0.99.
    
we can make queries on both models

    Product.where("price <= 1")
    Pen.where("color = ?", color)

---

Copyright (c) 2011 Hassan Zamani, released under the MIT license.

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
acts_as_relation-0.0.4 README.markdown
acts_as_relation-0.0.2 README.markdown
acts_as_relation-0.0.1 README.markdown