Ruby on Rails 6
Learn how to pragmatically build and design Rails apps in this step-by-step, project-based video course.
Learn Rails. It sounds straightforward, but often gets either cluttered-up or dumbed-down.
Cluttering-up happens when topics other than Rails get shoved into a Rails course as a way to give you "more for your money." More topics don't make a course more valuable, they just make it longer. True value is the confidence that comes from "really getting it."
Dumbing-down happens when a course leaves you unprepared to create your own thing. You can pass all the quizzes but still not understand how all the pieces fit together. The only score that really matters is knowing how to get your app from idea to deployment.
What Makes This Course Pragmatically Different?
Focus On Rails
The secret to learning anything well is focus. Your brain can only master one new topic at a time. Our aim in this course is to help you learn Ruby on Rails, and learn it really well. Get in, get out, get creating, and then add on from there.
Learn In Context
Learning topics such as MVC, REST, and Active Record in isolation is meaningless. You're left wondering "Now what?" It's only when you put all the pieces together in the context of building a real app that you'll be able to say "Now I get it!"
Unveil The Magic
For many, Rails can feel mysterious and magical. In this course, we take the proverbial bunny out of the hat and turn it inside-out (the hat, not the bunny!). By revealing exactly what's happening in that black space, you can use the "magic" to your own advantage.
Build A Real App!
Following along only gets you so far. The road to mastery begins when you apply newfound skills toward building something real. That's why every video in this course has a set of companion exercises where you put what you've learned into practice. And that's when the real magic happens!
Below you'll find a bunch of details about this course, starting with a short introduction video. If the course sounds like a good fit for you, we'd be delighted to have you in the Studio!
Mike & Nicole Clark
“This is the best Rails course hands-down! I've worked through several Rails courses and they don't even come close to explaining things as well as you do.” Thomas Neal
“This Rails course is fabulous! I took a few other courses, but still felt really confused. I learned a lot, feel more comfortable with Rails...This is my favorite Rails course.” Dana Nourie
“Our new hires are loving your online Ruby and Rails courses. In the past, our senior engineers taught new team members Rails on their own. But now with your courses, we are getting new engineers up to speed much easier and faster.” Eirik Holm, AppFolio
“I completed a few Rails tutorials before but this course contained more lightbulb moments than the rest of them put together. The explanations were clean, clear, and precise, and breaking things down into diagrams really helped. I know after completing your courses that I can build pretty much whatever I want in Rails.” Jonathan Mundy
Build a Full-Featured Rails 6 Web App From Scratch
Learn how to rapidly develop and deploy database-driven web apps the Rails way.
You can build amazing web applications with Rails, fast! But a huge part of developer productivity comes from understanding the Rails way of doing things. And the best way to learn Rails is by building real applications from scratch, preferrably with seasoned Rails developers at your side.
In this course, we incrementally build a Rails application step-by-step in the videos so you see exactly how it's done. Then, after each video, you apply what you learned by building another Rails application through a series of guided exercises.
Learning this way makes everything "click", and it's just more fun! 😀
By developing real applications with real code, you'll gain practical experience putting all the pieces together to craft applications using Rails best practices. And you'll come away with a deeper understanding of both the how and the why.
Working in the context of an application, we explore the following topics in-depth:
- Rails Development Environment
- Views and Controllers
- Models and Database Design
- RESTful Resources
- One-to-Many Associations
- User Accounts
- Authentication and Authorization
- Many-to-Many and Through Associations
- Active Record Callbacks
- Custom Routes
- Best Practices, Tips, and Techniques
Now standing up a Rails app that just works isn't the same as designing a good Rails app. Mastering Rails—writing compact, readable, and flexible code—starts by learning the conventions, practices, and idioms fostered by the Rails community.
And having developed with Rails for 15+ years, we've learned our own tips, tricks, and techniques for creating solid Rails apps. So, throughout the course, we discuss design principles and best practices to help you get the most out of Rails!
54 Concise Videos • 52 Chapter Workbook • 8.5 Hours
Just the way you like 'em: easy to digest, straight to the point, paced just right.
This course takes a project-based approach. We incrementally add new features as we build a complete Ruby on Rails web app from start to finish.
Welcome! After taking a peek at the apps we're going to build in this course, we'll help you get your development environment set up so you can start building Rails apps.
To make sure everything is up and running smoothly, we start by generating a skeleton Rails app and then get a quick lay of the land.
3. Views and Controllers (7:33 and 8:28) free
Rails has some strong opinions about how web apps should be designed. You've probably heard about the MVC design in the abstract, but we break it down in practice so you understand where to put your code and the benefits of a decoupled design.
4. Models (7:38 and 11:21) free
Well-designed models are the foundation of any good Rails app. Active Record is the object-relational mapping library that Rails uses to connect your models to your database tables. We don’t yet have a web interface for our app, so instead we see how to create, read, update, and delete records in the database via the console.
5. Connecting MVC (5:57) free
Now that we have some events stored in the database, the next step is to display them on the index page. To do that, the model, view, and controller must all work seamlessly together.
6. Migrations (10:30) free
The details about our events are looking a little sparse. So we add more attributes, which requires knowing how to manage the database schema with migrations.
7. View Helpers (9:20) free
The new event attributes are now displayed on the index page, but their formatting leaves a lot to be desired. We use both built-in and custom view helpers to give our app a lift and make things more reusable. We also answer the question: "Where does business logic belong?"
8. Layouts (3:55) free
To give our app a consistent look and feel, all the common layout elements need to live in one definitive place. Because when it comes to the layout of your app, consistency never goes out of style.
9. Stylesheet and Image Assets (7:44) free
It's always more enjoyable to work on an application that has some style and images. Adding in these assets gives us an opportunity to learn about the Rails asset pipeline.
10. Routes: Show Page (10:08) free
The Rails router receives incoming requests and, depending on a set of rules, dispatches these requests to an appropriate controller action. We start by defining a route that recognizes requests to show an event's details.
11. Routes: Linking Pages (9:14) free
In addition to being able to map requests based on defined routes, the router can also generate URLs that match these routes. We learn how to use route helper methods to generate links to navigate between pages.
12. Forms: Editing Records (12:21 and 11:55) free
Rails has a bunch of conventions to help you create robust and friendly forms with minimal code. We unveil the "magic" as we design a form for editing records, store submitted form data in the database, and display updated records.
13. Forms: Creating Records (14:44) free
Reinforcing what we learned about forms for editing records, we tackle creating records as we continue to implement the full range of CRUD actions using resource routes.
14. Partials (6:56) free
Crafting good Rails apps isn't just about implementing features that work as advertised. Good Rails apps also have clean, well-organized code. To that end, we learn how to use partials to structure the view layer into reusable, manageable chunks.
15. Destroying Records (5:06) free
We finish up implementing the resource routes by deleting records. Here's the cool part: All resources follow the same routes and conventions. So at this point in the course, you can confidently build a CRUD interface for any resource!
16. Custom Queries (6:21) free
Next up, we need to fetch a subset of events from the database and order them in a meaningful way. Thankfully, Active Record has a rich query interface that insulates us from having to write raw SQL to query our data. Master these query methods and you can slice and dice your data with ease, regardless of which database you use.
17. Migrations Revisited (9:57) free
To meet a new requirement, we need to add new fields to a database table. Time for a new migration! And anytime you migrate the database, you also need to think through the ripple effects. Come along as we work through all the steps to accommodate a new migration.
18. Model Validations (10:13) free
To prevent bad (invalid) data from making its way into the database, we add a variety of model validations and explore how they work in detail.
19. Handling Validation Errors (10:57) free
With our model validations in place, we're ready to handle and display any validation errors when submitting form data. You'll come away with a solid strategy for ensuring the integrity of your application's data while providing actionable feedback in the user interface.
20. The Flash (5:26) free
While on the topic of user feedback, we have a few cases where we need to flash a stylish message up on the page. It's common for web apps to flash messages between requests, and so Rails makes it easy.
21. One-to-Many: belongs_to (13:45)
Up to this point, we've been focused on one resource: events. Now we want to let folks register for events. To do that, we first create a registration resource and then start designing a one-to-many relationship between events and registrations.
One of the most powerful features of Rails is the ability to easily create these types of associations. But knowing the magic incantations isn't enough. To be empowered, you also need to how what goes on behind the scenes.
22. One-to-Many: has_many (12:07)
Now it's time to flip over to the other side of the one-to-many association. An event has many registrations, otherwise it wouldn't be a very exciting event. This video shows you how all the dots are connected!
23. One-to-Many: Nested Resources (12:53)
Registrations only make sense in the context of their associated event. To mimic that one-to-many relationship in our routes, we nest registration resources within an event resource. This is a common design technique that you'll definitely want to have in your arsenal!
24. One-to-Many: Forms (17:19)
How do you design a form for a one-to-many relationship so you can create child records that are associated with their parent? Answering this gives us an opportunity to apply (and reinforce) everything we've learned so far.
25. One-to-Many: Logic (4:46)
Once you start making associations between models and collecting data, you'll likely discover some interesting things you can do with it. For example, what does it mean for an event to be sold out? What's the average star rating for a movie? What determines if it's a cult classic? The code that answers those type of questions is part of the business logic of your domain. And knowing where to put that code is vital to designing a maintainable application.
26. User Account Model (13:20)
User accounts are a central part of any web application. By learning how to design a basic account management and authentication system from scratch, you'll know exactly how it works. With that understanding, you'll have the confidence to roll your own custom solution or integrate (and troubleshoot) a third-party solution.
We start by designing a solid User model that securely stores passwords using best-practice Rails conventions.
27. User Signup (10:19)
Now we're ready to design a signup form so users can create accounts and a profile page that displays their account information. To make the sign-up process more friendly, we also add a custom route.
28. Edit User Account (7:48)
Obviously, users also want to be able to edit their account information, and (dare we say) perhaps even delete their account. Then, with a complete UI for user accounts in place, the stage is set for authentication and other account-related features.
29. Sign In (12:39)
Now that users can create an account, the next logical step is to let them sign in. We start by designing a sign-in form.
30. Authentication (7:55)
Next, we confirm you are who you say you are by authenticating a user given their sign-in credentials.
31. Current User (6:57)
Once authenticated, we use a session to identify the current user as they navigate from page to page.
32. Sign Out (6:58)
And of course no authentication system would be complete without a way to sign out!
33. Authorization (9:19 and 10:05)
Now that we know whether a user is signed in or not, it's time to start restricting access to parts of the application. This process is commonly referred to as authorization. And while authorization rules vary widely depending on the nature of the application, once you understand the basic technique you can apply it as you see fit.
34. Admin Users (9:51)
Only super-special users we trust should be able to perform highly-sensitive actions in our app. So we need a way to distinguish admin users from regular users, and restrict access accordingly.
35. Many-to-Many Associations (8:36 and 8:29)
With user accounts and authorization in place, we can now streamline processes within the app for currently signed in users. To do that we create our first many-to-many association which connects a user to an event using a join model and a form.
36. Another Many-to-Many Association (10:42)
Rails has powerful conventions to help you manage many-to-many associations, but the conventions alone only take you so far. It's up to you to model the associations with the full stack in mind: from the database tables all the way through to the user interface. We look more in-depth at these details in a second many-to-many association.
37. Through Associations (7:06 and 13:11)
In the absence of a direct relationship between two models, which is the case with many-to-many relationships, how do you efficiently traverse between them? Thankfully, Rails offers a really convenient way: through associations. They can seem a bit magically at first, but we quickly dispel any confusion.
38. Many-to-Many with Checkboxes (10:18 and 5:33)
Many-to-many associations are really common, so to continue building your confidence we design a third many-to-many. This time we use a through association in the models and a collection of checkboxes in the user interface to assign multiple categories to events and multiple genres to movies.
39. Custom Scopes and Routes (10:48 and 7:24)
One approach to defining a custom query is to write a class-level method. But a more idiomatic and concise way to write a custom query is in a declarative style using the scope method. Doing so lets us slice and dice our events and movies into all sorts of interesting categories.
With our scopes in place for specific criteria, it's time to show them off. We set up custom routes so that users can easily filter what they're looking for.
40. Friendly URLs and Callbacks (15:05)
URLs are the user interface of the web. We browse to them, bookmark them, post them to Twitter, email them to friends, and share them in other ways. And don't forget the search engines that crawl them!
As part of your app's user interface, URLs require intentional design. One common technique is to include meaningful and friendly names (rather than numeric ids) in resource URLs. We show you exactly how to do that, exploring Active Record callbacks along the way.
41. Deployment (12:35)
Putting your Rails app into production shouldn't cause fear and trembling. Deploying Rails apps has gotten a lot easier over the years thanks in large part to cloud services such as Heroku. We'll show you how to deploy your Rails app for the first time, and incrementally roll out application updates with ease!
42. Active Storage File Uploads (18:16 and 9:49)
Rails has a built-in solution for letting users upload files. Active Storage facilitates uploading files to a variety of destinations, including cloud storage services such as Amazon S3, Google Cloud Storage, or Microsoft Azure.
To get things started, we set up Active Storage to store uploaded images on the local disk in development. We also go behind the scenes to see how Active Storage manages uploads using two database tables and a polymorphic association.
43. Encrypted Credentials (6:30)
All the cloud-based storage services require a set of super-secret credentials to verify who we are. Here's the rub: we need a way to encrypt those credentials so we can safely deploy them along with the application code. And when the application runs in production, we need a way to decrypt the encrypted credentials so Active Storage can use them to communicate with our storage service.
Thankfully, Rails has a tried-and-true way to do that.
44. Uploading Files to Amazon S3 (5:35)
Finally we're ready to use Active Storage to store uploaded images on Amazon S3 in production! 🥳
And from there, it's pretty straightforward to store uploaded files in any supported storage service.
This Course50 Videos • 8 Hours
Team LicenseUp to 10 team members
Here's What You Get:
Streamable and downloadable, DRM-free videos on any device. English subtitles on each video.
Apply what you learned in the videos through a series of exercises to build a slightly different web app on your own computer.
PDF cheat sheets that summarize the syntax, concepts, conventions, and shortcuts taught throughout the course.
Includes starter files, stepped versions of the app for each module, and all the source code for two full-featured Rails apps.
Post questions, get answers, and connect with other students who are taking the course.
No monthly subscription or time limit. Start when you want and repeat as often as you like!
For New Rails Developers
Need a fresh start or a refresher? This course is for you!
Getting started with Rails?
Perhaps you've been intrigued by Rails, but haven't yet had the opportunity to learn it comprehensively from scratch. It all starts here! You'll learn the fundamentals of developing web apps with Rails so you're ready to create your first Rails app or jump right into an existing app. No prior experience with Rails is assumed.
If you're new to the Ruby programming language or new to object-oriented programming in general, we strongly recommend taking our Ruby course prior to this course.
Struggling to put all the pieces together?
Rails is a structured framework that relies on conventions to optimize development time and minimize the amount of code you have to write. This makes developing web apps a bit easier… once you understand how everything fits together. Through live coding, animated visuals, and hands-on exercises, you'll learn how to build a full-featured web app so you're more confident (and less frustrated) writing your own Rails code.
Ready for a refresh and a restart?
If you started learning Rails a while back but haven't used it in earnest, this course will help you quickly get back up to speed with the latest version of Rails and current development techniques!
We aim for 100% satisfied developers, so if this course turns out not to be a good fit for you, we'll gladly issue you a 100% refund.
Created with 💛 by Mike and Nicole Clark
Hi, we'd be delighted to have you along as we create stuff in the Studio!
We've been using Rails since version 1.0. In fact, Mike helped build and launch one of the first production Rails apps way back in 2005. Since then together we've built countless Rails apps, including the suite of apps that power this site and our custom video training platform. We still write Rails code almost every day, and we love it!
Mike co-taught the first official Rails course in 2006 which lead to us starting this little training company we call The Pragmatic Studio. He's also the author of Advanced Rails Recipes, co-author of Agile Web Development with Rails, and author of Pragmatic Project Automation.
As with all our courses, this is the course we wish we had when learning Rails. One that's easy to jump into, doesn't get bogged down in syntax minutiae, and focuses on building a real Rails app. Nothing is held back: we tackle complex features by breaking down the concepts so everything makes sense. We've literally spent years designing and improving this course in a way that lets you learn everything in around a day. We hope you enjoy it!
Thousands have loved learning Rails this way!
Here's what some of them have to say…
“It is the absolute best for a first dive into Rails! It teaches you the correct way to start a new Rails app...If you go through the whole course, [the] magic will be explained and you’ll know what the Rails framework does instead of passively look at it do things for you.” Nico Schuele
“I really love the quality of your videos and lectures, and the way it builds up an app. It's the best that I've taken!” Vita Dewi van Beurden
“This is the BEST Rails introduction anywhere on the web! I learned a ton in this course that I didn't learn from other sources online. I was immediately able to start putting together an application that has been stuck in my head for a long time.” Wassim Metallaoui
“Simply amazing. The best online course I have ever experienced. Nicole and Mike, you are the best!” Tony Barone
“This course along with your Ruby Programming course offers the best introduction to learning Rails for a beginning developer. I cannot think of any book or video series that does as good a job.” Eric Ricketts
“I highly recommend Pragmatic Studio's Rails Programming courses! The exercises allow you to build something more complex than a blog and do so by applying what was learned in the lessons rather than merely following along! This format really drove things home for me.” Bart Falzarano
“The main difference I have found after taking a lot of other Rails courses is that you explain things in greater detail which has helped me understand the 'whys'.” David Theroff
“It seems like there are a lot of courses and tutorials out there that are great if you already know how to program in another language, but there are none that I know of (other than Pragmatic Studio!) that is great for a complete beginner. After taking your Ruby course I feel like I have a solid foundation to stand on. Now, learning Rails has been a lot of fun instead of a lot of frustration.” Andrew Markle
“The Rails course is leagues above some others I've tried. First of all, Mike and Nicole have skills as instructors, not just developers, so I didn't feel they were talking above my head. Also it's clear that the lessons and supporting files have been tested and edited -- because they work! The exercises in the example apps are very relevant and I left the course with a whole new level of expertise. I can't recommend this course enough!” Anne Richardson
“I've taken other Rails tutorials but yours really filled in the gaps in my understandings. I can now truly say that I've taken a big step towards developing with Rails.” John Weir
“Everything is great: the material, the teachers, the simple, concise, yet clear explanations in all the courses. I think these are the best Ruby and Rails online courses for people that want to jump into Rails. All of the courses are worth every penny!” Alfian Losari
“This course is fantastic! I had read a couple of Rails tutorial books and sort of understood what the example code was doing, but was having trouble sorting out how to build my own app. This course really filled in some missing pieces.” Terrence Talbot
“After trying many online Ruby on Rails courses across the Internet, this is the most thorough and enjoyable introduction available. Rhys Yorke
“A partner and I just released and started getting sales on an RoR app I created. I was able to build the prototype in a weekend! You all are a big reason I was able to do it. You have done a wonderful job of taking a lot of the 'magic' out of Rails.” Justin Seiter
“This is the best beginning Rails course I've found. I finally have a strong Rails foundation. Coming into the course, I had so many loose ends regarding how Rails worked, but I finished the course with the confidence to create my own app.” Brad Ballard