Module 3 has been some of the most challenging information I have attempted to digest in the world of technology and software development. Though it was challenging and I have a long way to go until I feel much more confident in the information I use on a day to day basis, I'm so proud of how far I've come in this experience thus far.
Okay, so here's what happened:
Each month the checklist for our projects have been growing, and this project was not an exception. Here are a few of the things we included:
- Single and Bi-directional relationships in our models.
- Defining validations in our models to protect from invalid or harmful data being submitted by the user.
- Using standard authentication AND in that authentication system allowing the user to login via one 3rd-party (Facebook, Twitter, GitHub, Google, etc etc) if they do not have an account in this created application, or to allow a user to signup/login "regularly".
- Inclusion of a nested
newroute, and a nested
showroute while following RESTful URLs conventions.
- Keeping the code within the application as clean and DRY (Don't-Repeat-Yourself) as possible.
- Utilizing helper methods and partial forms (when appropriate).
- Define and use at least one scope method. (I chose to create one to list all instruments heavier than 100lbs. If you're a percussionist, you know how useful this can be knowing how much equipment is heavier than 100lbs. lol.)
- Use of generators to produce specific components available to use via the
- Customization and production of
errormessages and correctly displaying any validation errors.
Looking back at the checklist from the curriculum, I can't believe that I have learned so much in 3 months, and on top of that, the terminology that I am able to use to communicate as effectively as I can thus far. This has been such a journey, (with two months left to go!), and there are a lot of points during these months where I think to myself "I'm not understanding this. I'm going to fall behind. I'm gonna have to move to part-time. I don't know if I can do this yet." BUT, when those thoughts begin to creep up, I take a deep breath, step back and think, "wow. I am really doing something amazing here. And have done so much in a short amount of time. Keep going. Trust the process."
Back to the project:
rails new to create the project file, then by use of the
devise gem, I was able to set up my project EASILY with user authentication. (Thank you to whomever created this gem, lol) Then, by use of some super amazing blogging by a past // Flatiron student, was also able to set up the 3rd-party login/authentication via GitHub super easy as well. (THANK YOU Salma Elshahawy!)
With my application set up with user authentication and 3rd party login capabilities, I was now able to being thinking about the
relationships I wanted to build for my project.
And settled on these:
To allow the user to keep track of instruments they like, play, or have in their day-to-day lives.
class User < ApplicationRecord
has_many :categories, through: :instruments
class Instrument < ApplicationRecord
class Category < ApplicationRecord
has_many :users, through: :instruments
As a musician, I figured something like this could be a handy tool to utilize since my previous occupation was a percussionist and having to keep track of HUNDREDS of pieces of equipment.
Wednesday was the day I began to get into the nity-grity of the code. Setting up the appropriate views, adding buttons, adding test data to make sure it's functioning properly. (Thank goodness for paired programming when you need a fresh set of eyes or some help from other cohort team members -- THANKS CHRISTINA! )
The end of the week was fast approaching and went to both study groups, AND attended a pre-scheduled 30-min session with Nancy
(Cohort Leader_090820). Nancy really saved my project so many times this day, haha. My params were acting so funky, and my strong params too. The
new/create actions were not functioning properly => cue Nancy to the rescue. lol.
And then finally, we approached the final day of office hour days, and ability to code together with some people and get fresh set of eyes when needed quickly. Also had this weird funky thing happening with my scope methods, and again, Nancy came to my rescue.
Once I had full consistent functionality with my project, was able to relax slightly and add some bootstrap styling in order to fine-tune some aesthetics as best as I could muster on a tired brain of coding so vigorously this week. BUT WE DID IT!
Welcome to the Instrument Warehouse
<div class="jumbotron bg-info">
<h4 class="display-5 text-center">Welcome to the Instrument Warehouse</h4>
<h4 class="lead text-center">Please select an option from the navigation bar above</h4>
<img src="https://wallpaperaccess.com/full/2039813.jpg" class="img-fluid text-center" alt="Responsive image">