Git Product home page Git Product logo

ruby-objects-has-many-through-lab-nyc-web-071618's Introduction

Ruby Object Relations: Has-Many-Through Lab

Objectives

  1. Write classes that are related to each other via the "has-many-through" relationship.
  2. Write methods that use the "has-many-through" relationship to deliver information on related objects.

Overview

In this lab, we'll be dealing with two sets of three classes.

We have a Song, Artist and Genre class. Songs belong to an artist and belong to a genre. A genre has many songs and an artist has many songs. An artist has many genres through its songs and a genre has many artists through its songs.

We also have an Appointment, Doctor and Patient class. Appointments belong to a patient and to a doctor. A doctor has many appointments and a patient has many appointments. A doctor has many patients through its appointments and a patient has many doctor's through its appointments.

Instructions

Start with the Artist/Song/Genre domain.

The Artist model:

  • The Artist class needs a class variable @@all that begins as an empty array
  • The Artist class needs a class method .all that lists each artist in the class variable
  • An artist is initialized with a name and is saved in the @@all array.
  • The Artist class needs an instance method, #new_song, that takes in an argument of a name and genre creates a new song. That song should know that it belongs to the artist.
  • The Artist class needs an instance method, #songs, that iterates through all songs and finds the songs that belong to that artist. Try using select to achieve this.
  • The Artist class needs an instance method, #genres that iterates over that artist's songs and collects the genre of each song.

The Song model:

  • The Song class needs a class variable @@all that begins as an empty array.
  • The Song class needs a class method .all that lists each artist in the class variable.
  • A song should be initialized with a name, an artist, and a genre, and be saved in the @@all array.

The Genre model:

  • The Genre class needs a class variable @@all that begins as an empty array.
  • The Genre class needs a class method .all that lists each artist in the class variable.
  • A genre should be initialized with a name and be saved in the @@all array.
  • The Genre class needs an instance method, #new_song, that takes in an argument of a name and an artist and creates a new song. That song should know that it belongs to the genre.
  • The Genre class needs an instance method, #songs, that iterates through all songs and finds the songs that belong to that genre.
  • The Genre class needs an instance method, #artists, that iterates over the genre's collection of songs and collects the artist that owns each song.

Now let's move on to our Doctor/Appointment/Patient domain model.

The Doctor model:

  • The Doctor class needs a class variable @@all that begins as an empty array.
  • The Doctor class needs a class method .all that lists each artist in the class variable.
  • A doctor should be initialized with a name and be saved in the @@all array.
  • The Doctor class needs an instance method, #new_appointment, that takes in a date and an instance of the Patient class and creates a new appointment. That appointment should know that it belongs to the doctor
  • The Doctor class needs an instance method, #appointments, that iterates through all appointments and finds those belonging to this doctor.
  • The Doctor class needs an instance method, #patients, that iterates over that doctor's appointments and collects the patient that belongs to each appointment.

The Appointment model:

  • The Appointment class needs a class variable @@all that begins as an empty array.
  • The Appointment class needs a class method .all that lists each artist in the class variable.
  • An appointment should be initialized with a date (as a string, like "Monday, August 1st"), a patient, and a doctor. The appointment should be saved in the @@all array.

The Patient model:

  • The Patient class needs a class variable @@all that begins as an empty array.
  • The Patient class needs a class method .all that lists each artist in the class variable.
  • A patient is instantiated with a name and be saved in the @@all array.
  • The Patient class needs an instance method, #new_appointment, that takes in an argument of a doctor and a date and creates a new appointment. The appointment should know that it belongs to the patient.
  • The Patient class needs an instance method, #appointments, that iterates through the appointments array and returns appointments that belong to the patient.
  • The Patient class needs an instance method, #doctors, that iterates over that patient's appointments and collects the doctor that belongs to each appointment.

View Ruby Object Relations: Has-Many-Through Lab on Learn.co and start learning to code for free.

View Has Many Objects Through Lab on Learn.co and start learning to code for free.

ruby-objects-has-many-through-lab-nyc-web-071618's People

Contributors

annjohn avatar aviflombaum avatar danielseehausen avatar ga-be avatar jmburges avatar pletcher avatar sophiedebenedetto avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.