Tutorials Point


  Learning Ruby on Rails 2.1
  Advanced Ruby on Rails 2.1
  Ruby on Rails Quick Guide
  Ruby Tutorial
  Ruby on Rails Resources
  Selected Reading

Copyright © 2014 by tutorialspoint



  Home     References     Discussion Forums     About TP  

Ruby on Rails 2.1 - The Models


previous next AddThis Social Bookmark Button

Advertisements

Model Creation:

Model.new   # creates a new empty model
Model.create( :field => 'value', :other_field => 42 )
# creates an object with the passed parameters and saves it
Model.find_or_create_by_field( value )  
# searches for a record where "field = value", creates
# a new record if not found
User.find_or_create_by_name_and_email( 'ramjoe', 'ram@example.com')

Model Relations:

There are four ways of associating models. has_one, has_many, belongs_to and has_and_belongs_to_many. Assuming the following four entities:

Model Relation

def Order < ActiveRecord::Base
  has_many :line_items
  belongs_to :customer 
end
def LineItem < ActiveRecord::Base
  belongs_to :order
end
def Customer < ActiveRecord::Base
  has_many :orders
  has_one :address
end
def Address < ActiveRecord::Base
  belongs_to :customer
end

Consider following relaship:

Model Relation 2

def Category < ActiveRecord::Base 
  has_and_belongs_to_many :products
end
def Product < ActiveRecord::Base
  has_and_belongs_to_many :categories  
end

Association Join Models:

Consider the following relationship now. This depicts how we can use joins while defining relationship.

Model Relation 3

class Author < ActiveRecord::Base
  has_many :authorships
  has_many :books, :through => :authorships
end
class Authorship < ActiveRecord::Base
  belongs_to :author
  belongs_to :book
end
class Book < ActiveRecord::Base
  has_one :authorship
end
@author = Author.find :first
# selects all books that the author's authorships belong to.
@author.authorships.collect { |a| a.book }
selects all books by using the Authorship join model
@author.books 

Check the following link for more detail on Associations.



previous next Printer Friendly

Advertisements


  

Advertisements