I’ve created a Ruby CRUD MVC web app that allows users to signup, login, logout, write a review for a book, edit their review, delete their review, and see all the reviews they’ve made. A user’s reviews are persisted in a database unless a user decides to delete their review. One user cannot access another user’s reviews, nor login to another user's account. A user’s password is encrypted when it is stored in the database.
To login, signup, create a review, or edit a review, a user fills out a form. To logout, see a review, or delete a review, a user clicks a button.
My project’s schema (the database tables and their relationships to each other) is presented below:
I used the following technologies in my project:
My database caused several hiccups in my work-flow. When I wanted to re-seed my database, I ran
in my terminal, but I received the following error:
ActiveRecord::AdapterNotSpecified: 'development' database is not configured. Available: 
My first attempt at a remedy was to delete my db folder. But when it wouldn’t return from my computer's trash folder, I decided to make a new Github repository. My ultimate solution to reseed my database was to delete just the .sqlite file in the db folder, then run
In another subject, organizing my project’s code was a bit of a challenge. I had some trouble understanding which controllers to use for what reason. In the end, I had a
books_controller, and a
reviews_controller. In hindsight, I could have deleted the
books_controller and moved the code into the
reviews_controller. This would have made my project easier to understand for other developers.
The coding process wasn’t all a struggle - I did enjoy creating the forms and using some HTML to make my index page (http://localhost:9393/) look nice. I also added an image from Micah Ulrich’s fantastic online art collection. However, as a whole, I prioritized getting my code to function properly, rather than focusing on how my website would look to the end user.
My project’s code can be found here: https://github.com/colerau/sinatra_project_v3