The Rails Portfolio Project – Fashion Show Organizer

Posted by igoreskin on January 1, 2018

It’s fascinating how different people can perceive exactly the same thing in completely different ways, and Rails is definitely no exception. As much as I was looking forward to finally start it and as much as I’d heard about its magical tricks, the actual experience of working on Rails was something different than what I had expected. Sometimes, figuratively speaking, the rails take you into a tunnel with no visible light at the end of it without help from a technical coach, perhaps because the degree of abstraction is very high and the conventions take things out of the realm of your control what feels like unbeknownst to you and against your will. There’s a saying that every good advice calls for ten more good advices on how to actually follow that first one – the same thing with Rails where every abstraction and every convention require deep knowledge of what actually has been abstracted away and why, and why the convention is what it is. But it seems that the longer you work with Rails the more rewarding it becomes, and working on the portfolio project actually helped me realize that with the power of Rails there’s essentially no limits to what you can do.

Although the idea of building a virtual fashion show organizer is, to my understanding, quite far from what is usually picked as an idea for a portfolio project, this is exactly what made it interesting, because generally speaking unusual ideas are free from preconceived notions, they push you out of the comfort zone of familiar topics and present a healthy conceptual challenge all the way through the implementation. The application is obviously a metaphor, where the users of the organizer are all-time greatest fashion designers who can log in, create new designs of various styles and fashions, and create fashion shows at different locations around the world. A new fashion designer can sign up, create designs and set up fashion shows using the existing designs as well as create their own. Thanks to the power of Omniauth, designers can log in using their Facebook login and password – we’ll obviously never know, but can you even imagine what the Facebook page of for example Coco Chanel would look like? Stunning I bet.

I have intentionally tried to use as much as I could of what I’ve learned about Rails. The entire signup, login, logout and authentication process is handled by Devise. The relations between the models include belongs_to, has_many and has_many_through, designs being the join table between designers and fashion shows. The Designer model is used throughout the application, but its class_name is actually User in the spirit of Devise. Both designer’s and fashion show’s show pages include a link to create a new design, and this functionality is handled by nested routes. Nested attributes and a custom setter are represented by the functionality of creating a new design within the form for a new fashion show. Fashion shows can also be selected by location with the help of class methods, and the user can check out fashion shows at the location of their choice.

This project has obviously merely scratched the surface of Rails, but the longer I worked on it the more I realized how much more of the Rails magic I would love to be able to handle and how powerful are the tools that I am about to learn how to use. Repetition is the mother of skill, and I believe that with every new application that we write we ingrain the skills we already possess deeper in our conciseness, at the same time exploring and exponentially learning new, more advanced things, making them our own. To be a part of such a process is one of the greatest intellectual privileges in life, and that’s what programming is essentially about.