0% found this document useful (0 votes)
45 views13 pages

Model For Student Table: SELECT FROM Students

The document describes using ActiveRecord in Ruby on Rails to define a Student model and perform basic CRUD operations on student records in a database table. It shows generating a Student model class, creating a new student record, retrieving student data, and defining one-to-many and many-to-many relationships between Student and other models like Advisor and Course through migrations and associations.

Uploaded by

Priyank Paliwal
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
45 views13 pages

Model For Student Table: SELECT FROM Students

The document describes using ActiveRecord in Ruby on Rails to define a Student model and perform basic CRUD operations on student records in a database table. It shows generating a Student model class, creating a new student record, retrieving student data, and defining one-to-many and many-to-many relationships between Student and other models like Advisor and Course through migrations and associations.

Uploaded by

Priyank Paliwal
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 13

Model for Student Table

SELECT * FROM students;


+----+-----------+------------+------+------+
| id | name | birth | gpa | grad |
+----+-----------+------------+------+------+
| 1 | Anderson | 1987-10-22 | 3.9 | 2009 |
| 2 | Jones | 1990-04-16 | 2.4 | 2012 |
| 3 | Hernandez | 1989-08-12 | 3.1 | 2011 |
| 4 | Chen | 1990-02-04 | 3.2 | 2011 |
+----+-----------+------------+------+------+

Rails model class (app/models/student.rb):


class Student < ActiveRecord::Base
end

Command to create this class:


rails generate model student
CS 142 Lecture Notes: Rails ActiveRecord Slide 1
Create New Record

student = Student.new
student.name = "Williams"
student.birth = "1989-11-16"
student.gpa = 2.8
student.grad = 2012
student.save()

CS 142 Lecture Notes: Rails ActiveRecord Slide 2


Simple Example

app/controllers/students_controller.rb:

class StudentsController < ApplicationController


...
def index
@students = Student.all
end
end

CS 142 Lecture Notes: Rails ActiveRecord Slide 3


Simple Example, contd
app/views/students/index.html.erb:

<%@title = "All Students"%>


<h1>Current Students</h1>
<table class="oddEven">
<tr class="header">
<td>Name</td>
<td>Date of Birth</td>
<td>GPA</td>
<td>Graduation Year</td>
</tr>
<% for student in @students %>
<tr class="<%= cycle('even', 'odd') %>">
<td><%= link_to(student.name, :action => :edit,
:id => student.id) %></td>
<td><%= student.birth %></td>
<td><%= student.gpa %></td>
<td><%= student.grad %></td>
</tr>
<% end %>
</table>
CS 142 Lecture Notes: Rails ActiveRecord Slide 4
Read, Update, Delete

students = Student.all()
student = Student.find(187)
student = Student.find_by(name: "Hernandez")
student = Student.find_by_name("Hernandez")
smarties = Student.where("gpa >= 3.0")
smarties = Student.order("gpa DESC").limit(10)

student = Student.find(187)
student.gpa = 4.0
student.save()

Student.find(187).destroy()

CS 142 Lecture Notes: Rails ActiveRecord Slide 5


Many-to-One Relationships
SELECT * FROM students;
+----+-----------+------------+------+------+------------+
| id | name | birth | gpa | grad | advisor_id |
+----+-----------+------------+------+------+------------+
| 1 | Anderson | 1987-10-22 | 3.9 | 2009 | 2 |
| 2 | Jones | 1990-04-16 | 2.4 | 2012 | 1 |
| 3 | Hernandez | 1989-08-12 | 3.1 | 2011 | 1 |
| 4 | Chen | 1990-02-04 | 3.2 | 2011 | 1 |
+----+-----------+------------+------+------+------------+

SELECT * FROM advisors;


+----+----------+-----------+ class
| id | name | title | class Student
Student << ActiveRecord::Base
ActiveRecord::Base
belongs_to :advisor
belongs_to :advisor
+----+----------+-----------+ end
| 1 | Fujimura | assocprof | end
class
class Advisor
Advisor << ActiveRecord::Base
ActiveRecord::Base
| 2 | Bolosky | prof | has_many :students
+----+----------+-----------+ has_many :students
end
end

CS 142 Lecture Notes: Rails ActiveRecord Slide 6


Many-To-One Examples

advisor = Advisor.find_by_name("Fujimura")
for student in advisor.students do
...
end

student = Student.find_by_name("Chen")
student.advisor = Advisor.find_by_name("Bolosky")
student.save

CS 142 Lecture Notes: Rails ActiveRecord Slide 7


Many-to-Many Relationships
SELECT * FROM students; SELECT * FROM courses_students;
+----+-----------+------------+------+------+ +-----------+------------+
| id | name | birth | gpa | grad | | course_id | student_id |
+----+-----------+------------+------+------+ +-----------+------------+
| 1 | Anderson | 1987-10-22 | 3.9 | 2009 | | 1 | 1 |
| 2 | Jones | 1990-04-16 | 2.4 | 2012 | | 3 | 1 |
| 3 | Hernandez | 1989-08-12 | 3.1 | 2011 | | 4 | 1 |
| 4 | Chen | 1990-02-04 | 3.2 | 2011 | | 1 | 2 |
+----+-----------+------------+------+------+ | 2 | 2 |
| 1 | 3 |
SELECT * FROM courses; | 2 | 4 |
+----+--------+-----------------+-------------+ | 4 | 4 |
| id | number | name | quarter | +-----------+------------+
+----+--------+-----------------+-------------+
| 1 | CS142 | Web stuff | Winter 2009 |
| 2 | ART101 | Finger painting | Fall 2008 |
| 3 | ART101 | Finger painting | Winter 2009 |
class Student < ActiveRecord::Base
| 4 | PE204 | Mud wrestling class Student
| Winter 2009 <
| ActiveRecord::Base
has_and_belongs_to_many
has_and_belongs_to_many :courses
+----+--------+-----------------+-------------+ :courses
end
end
class
class Course
Course << ActiveRecord::Base
ActiveRecord::Base
has_and_belongs_to_many
has_and_belongs_to_many :students
:students
end
end
CS 142 Lecture Notes: Rails ActiveRecord Slide 8
Many-To-Many Examples

student = Student.find_by_name("Anderson")
for course in student.courses do
...
end

cs142 = Course.find_by_number("CS142")
student.courses << cs142

CS 142 Lecture Notes: Rails ActiveRecord Slide 9


Migration: Create New Table

db/migrate/20090215220309_create_students.rb:

class CreateStudents < ActiveRecord::Migration


def change
create_table :students do |t|
t.column :name, :string
t.column :birth, :date
t.column :gpa, :float
t.column :grad, :integer
end
end
end

CS 142 Lecture Notes: Rails ActiveRecord Slide 10


Migration: Add Column

db/migrate/20101013224357_add_advisor.rb:

class AddAdvisor < ActiveRecord::Migration


def change
add_column :students, :advisor_id, :integer
end
end

CS 142 Lecture Notes: Rails ActiveRecord Slide 11


Migration Utilities
rails generate migration create_students
=> db/migrate/20131212210728_create_students.rb

rails generate model students

rake db:migrate

rake db:migrate VERSION=20090130180755

rake db:reset

rake db:migrate:reset
CS 142 Lecture Notes: Rails ActiveRecord Slide 12
CS 140 Lecture Notes: File Systems Slide 13

You might also like