- Write a method that turns database rows into Ruby objects
- Write methods that allow you to search a database
We are going to continue building out the Student
class of our app. We are in
the middle of building an app to help a public school's administrators keep
track of their students. In this app, we have a Student
class. Each individual
student has two attributes, a name
and a grade
, i.e. 9th, 10th, 11th, etc.
Our administrators need to save the student objects that this class produces to
a database. We've set up the database for you in the config/environment.rb
file.
Let's take a look:
require 'sqlite3'
require_relative '../lib/student'
DB = {:conn => SQLite3::Database.new("db/students.db")}
Your connection to the database can be referred to, throughout your program,
like this: DB[:conn]
.
So far we built the ability to create the students
table in the database
(Student.create_table
), drop that table (Student.drop_table
), and #save
a
student to the database.
Now, we will need to create a method that takes a row from the database and
turns it back into a Student object. We will call this .new_from_db
.
Next, we want to build a couple of methods to get information from the database.
We will call these .find_by_name
and .all
.
Let's get started!
This is a class method that accepts a row from the database as an argument. It then creates a new student object based on the information in the row. Remember, our database doesn't store Ruby objects, so we have to manually convert it ourselves.
This is a class method that accepts the name of a student. You will first run a SQL query to get the result from the database where the student's name matches the name passed into the argument.
Next, you will take the result and create a new student instance using the
.new_from_db
method you just created.
This is a class method that is very similar to the .find_by_name
method. You
will not need an argument since we are returning everything in the database. Run
the SQL to return everything (*
) from a table.
Again, you will use the .new_from_db
method to create a student instance for
each row that comes back from the database.
This is a class method that does not need an argument. This method should return an array of all the students in grade 9.
This is a class method that does not need an argument. This method should return an array of all the students below 12th grade.
This is a class method that takes in an argument of the number of students from
grade 10 to select. This method should return an array of exactly X
number of
students.
This is a class method that does not need an argument. This should return the first student that is in grade 10.
This is a class method that takes in an argument of a grade for which to
retrieve the roster. This method should return an array of all students for
grade X
.
View ORM Mapping Database Rows to Ruby Objects on Learn.co and start learning to code for free.