My objective was to build a Sinatra application which met the following requirements:
had a MVC (Model-View-Controller) architecture
used ActiveRecord
utilized multiple models
used at least one
has_many
relationship on a User model and onebelongs_to
relationship on another model.had user accounts, where users were able to sign up, sign in, and sign out.
validate the uniqueness of user login attributes, such as username or email
once logged in, a user had the ability to create, read, update and destroy the resource that
belongs_to
that user.ensured that users could edit and delete only their own resources but not those created by other users.
validated user input so bad data was not able to be persisted to the database
I was able to create a working Sinatra MVC application which met all of these requirements. I decided to make my application function as a quote management service, where users could enter memorable quotes that they had come across and save them in their pages, while also being able to view quotes that other users had saved.
I learned a great deal about a number of features of Sinatra and about programming in general.
Some specific things I gained more experience and knowledge of were the following:
how to design views (the V in MVC) to make my application's pages convey relevant information to users based upon what links or buttons they clicked and whether they were logged in or not.
how to make good use of helper methods.
the usefulness of yield and layout in reducing repetition of code
the usefulness of embedded ruby tags
the power of controllers (the C in MVC)
the usefulness of validations on models
sessions and how to use the bcrypt gem for user authentication
forms and how they relate to controller actions
I learned a great deal about Sinatra and working on this project was a rewarding experience overall.
Top comments (0)