RUBY ON RAILS
CSCI 5448 – Fall 2012 Presentation
Prashanth Mannar
11/16/2012 Ruby on Rails - Prashanth Mannar 1
RUBY ON RAILS CSCI 5448 Fall 2012 Presentation Prashanth Mannar - - PowerPoint PPT Presentation
RUBY ON RAILS CSCI 5448 Fall 2012 Presentation Prashanth Mannar 11/16/2012 Ruby on Rails - Prashanth Mannar 1 Contents in this Presentation OUTLINE 11/16/2012 Ruby on Rails - Prashanth Mannar 2 Outline Ruby What and Why
Prashanth Mannar
11/16/2012 Ruby on Rails - Prashanth Mannar 1
Contents in this Presentation
11/16/2012 Ruby on Rails - Prashanth Mannar 2
11/16/2012 Ruby on Rails - Prashanth Mannar 3
What and why…
11/16/2012 Ruby on Rails - Prashanth Mannar 4
11/16/2012 Ruby on Rails - Prashanth Mannar 5
11/16/2012 Ruby on Rails - Prashanth Mannar 6
11/16/2012 Ruby on Rails - Prashanth Mannar 7
What, why and features…
11/16/2012 Ruby on Rails - Prashanth Mannar 8
11/16/2012 Ruby on Rails - Prashanth Mannar 9
11/16/2012 Ruby on Rails - Prashanth Mannar 10
11/16/2012 Ruby on Rails - Prashanth Mannar 11
11/16/2012 Ruby on Rails - Prashanth Mannar 12
11/16/2012 Ruby on Rails - Prashanth Mannar 13
ActiveRecords, Action Pack, CRUD, Migrations…
11/16/2012 Ruby on Rails - Prashanth Mannar 14
11/16/2012 Ruby on Rails - Prashanth Mannar 15
11/16/2012 Ruby on Rails - Prashanth Mannar 16
11/16/2012 Ruby on Rails - Prashanth Mannar 17
to be executed on the browser
11/16/2012 Ruby on Rails - Prashanth Mannar 18
– Rails handles most of this interaction behind the scenes
– Routing external requests to internal actions – Managing caching
– Managing helper modules
code
– Managing sessions
applications
11/16/2012 Ruby on Rails - Prashanth Mannar 19
11/16/2012 Ruby on Rails - Prashanth Mannar 20
an_order = Order.new an_order.name = “Dave Thomas” an_order.address = “122 Main” an_order.phone = 2125551212 an_order.save Order.new do |o|
end an_order = Order.new( :name => “Dave Thomas”, :address => “122 Main”, :phone => 2125551212 ) an_order.save Note: We didn’t need to set a primary key. Rails assumes “id” is primary key and set autoincrement
11/16/2012 Ruby on Rails - Prashanth Mannar 21
an_order = Order.create( :name => “Dave Thomas”, :address => “122 Main”, :phone => 2125551212 ) an_order = Order.create( [ { :name => “Dave Thomas”, :address => “122 Main”, :phone => 2125551212 }, { :name => “Another Name”, :address => “blah”, :phone => 1234567890 } ] )
11/16/2012 Ruby on Rails - Prashanth Mannar 22
– Rails will return objects containing the data from those rows in the database
– an_order = Order.find(27) – product_list = Order.find(params[“product_list”])
11/16/2012 Ruby on Rails - Prashanth Mannar 23
– can pass :all or :first along with other parameters
– corresponds to WHERE clause
– corresponds to ORDER BY clause
– corresponds to LIMIT
– use in connection with :limit to step through query results
:conditions => “name = ‘Dave Thomas’”)
:conditions => “name = ‘Dave’”, :order => “pay_type, shipped_at DESC”, :limit => 10)
11/16/2012 Ruby on Rails - Prashanth Mannar 24
– pname = params[:name]
:conditions => [“name = ?”, pname]) – orders = Order.find(:all, :conditions => [“name = :name”, {:name => pname}])
– orders = Orders.find_by_sql(“select * from orders”) – single parameter - SQL string – May also be an array where first element is SQL with place holders. The rest is a list of values or hash – Nice for hard queries or performance
11/16/2012 Ruby on Rails - Prashanth Mannar 25
– find the row or rows using find – update necessary fields – save
– orders = Order.find(:all, :conditions => “name like ‘Dave%’”)
etc.
– order = Order.update(123, :name => “F”, :address => “blah”)
– result = Order.update_all(“set clause”, “where clause”)
11/16/2012 Ruby on Rails - Prashanth Mannar 26
– Order.delete(123) – Order.delete([1,2,3,4]) – Order.delete_all([“price > ?”, maxprice])
– order.find(123) – order.destroy – Order.destroy_all([“price > ?”, maxprice])
– preferred methods
11/16/2012 Ruby on Rails - Prashanth Mannar 27
– always making changes – even to the database
11/16/2012 Ruby on Rails - Prashanth Mannar 28
11/16/2012 Ruby on Rails - Prashanth Mannar 29
– accepts a table name and a ruby block
– accepts table name and column name – and column type if adding a column
– accepts table name, column name, new column name
– accepts table name, column name, new type
– accepts table name
11/16/2012 Ruby on Rails - Prashanth Mannar 30
Pros and Cons…
11/16/2012 Ruby on Rails - Prashanth Mannar 31
11/16/2012 Ruby on Rails - Prashanth Mannar
32
11/16/2012 Ruby on Rails - Prashanth Mannar
33
Reference and Learning Materials
11/16/2012 Ruby on Rails - Prashanth Mannar 34
11/16/2012 Ruby on Rails - Prashanth Mannar 35
11/16/2012 Ruby on Rails - Prashanth Mannar 36
Matsumoto
Heinemeier Hansson
11/16/2012 Ruby on Rails - Prashanth Mannar 37
tutorials
David Heinemeier Hansson (Ruby on Rails creator) explained, "Once you've tried developing a substantial application in Java or PHP or C# or whatever," he says, "the difference in Rails will be readily apparent. You gotta feel the hurt before you can appreciate the cure."
11/16/2012 Ruby on Rails - Prashanth Mannar 38