ActiveRecord Models & Migrations
ActiveRecord is the part of Ruby on Rails that talks to your database. It's an ORM: it maps Ruby objects to database rows so you can store and query data with plain Ruby instead of SQL.
Learn ActiveRecord Models & Migrations in our free Ruby course — a beginner-friendly interactive lesson with worked examples, a practice exercise and a quick…
Part of the free Ruby course at LearnCodingFast — hands-on lessons with examples you run in your browser, plus practice exercises and a quick quiz.
By the end of this lesson you'll generate a model, write and run migrations, understand the schema, and perform CRUD with create, find, where, update, and destroy.
What You'll Learn in This Lesson
1️⃣ Models and Migrations
A model is a Ruby class inheriting from ApplicationRecord ; it maps to a table automatically. The generator also creates a migration , which you apply with rails db:migrate .
The migration describes the table's columns. Running it builds the table and updates db/schema.rb .
2️⃣ CRUD with ActiveRecord
With a model in place, you store and fetch data using Ruby methods. create inserts, find / where / all read, update changes, and destroy deletes.
Your turn. Fill in the right ActiveRecord method for each task.
Mini-Challenge: Match the Method
For each goal, name the ActiveRecord method you'd call.
Common Errors (and the fix)
- Forgetting rails db:migrate — A new column won't exist until you run the migration.
- Editing schema.rb by hand — Don't; change the schema through a migration so it stays in sync.
- RecordNotFound from find — find raises if the id is missing; use find_by for a nil-or-record result.
- Singular/odd table names — Models are singular ( Post ), tables are plural ( posts ); follow the convention.
- Confusing where and find — where returns a relation (many); find returns one record.
Pro Tips
- 💡 Experiment in the console: rails c is the safest place to learn ActiveRecord.
- 💡 One migration per change: small, focused migrations are easy to roll back.
- 💡 Let the ORM write SQL: reach for raw SQL only when you truly need it.
📋 Quick Reference — ActiveRecord
Concept
Syntax
Generate model
rails g model Post title:string
Run migrations
rails db:migrate
Create
Post.create(title: "Hi")
Read one
Post.find(1)
Read many
Post.where(published: true)
Update / delete
post.update(...) / post.destroy
Frequently Asked Questions
🎉 Lesson Complete!
- ✅ ActiveRecord is Rails' ORM, mapping objects to rows
- ✅ rails g model creates a model and migration
- ✅ rails db:migrate applies schema changes
- ✅ db/schema.rb reflects the current structure
- ✅ CRUD: create , find , where , update , destroy
- ✅ Next lesson: Associations
Practice quiz
What is ActiveRecord?
- A CSS framework
- Rails' ORM that maps Ruby objects to database rows
- A routing macro
- A testing tool
Answer: Rails' ORM that maps Ruby objects to database rows. ActiveRecord is Rails' ORM, mapping classes to tables and objects to rows.
A model named Post conventionally maps to which table?
- post
- Posts
- posts
- tbl_post
Answer: posts. By convention a Post model maps to the plural, lowercase posts table.
Which command generates a model with a migration?
- rails g model Post title:string
- rails new model Post
- rails server Post
- rails routes Post
Answer: rails g model Post title:string. rails g model Post title:string creates the model class and a matching migration.
What is a migration?
- A controller action
- A versioned set of instructions to change the database schema
- A view template
- A route helper
Answer: A versioned set of instructions to change the database schema. A migration is a versioned Ruby script describing changes to the database structure.
Which command applies pending migrations to the database?
- rails db:create
- rails db:rollback
- rails server
- rails db:migrate
Answer: rails db:migrate. rails db:migrate runs pending migrations, updating the schema.
How do you create and save a record in one call?
- Post.all
- Post.create(title: "Hi")
- Post.where(title: "Hi")
- Post.destroy
Answer: Post.create(title: "Hi"). Post.create(...) builds and saves a new record in a single call.
Which method finds a record by its primary key id?
- Post.where(5)
- Post.all(5)
- Post.find(5)
- Post.new(5)
Answer: Post.find(5). Post.find(5) returns the record whose id is 5 (raising if none exists).
What does Post.where(published: true) return?
- A single record
- A relation of all matching records
- The count only
- Nothing
Answer: A relation of all matching records. where returns an ActiveRecord::Relation of every record matching the condition.
Which file reflects the database's current structure?
- db/schema.rb
- config/routes.rb
- app/models/post.rb
- Gemfile
Answer: db/schema.rb. db/schema.rb is the auto-generated snapshot of the current database structure.
How do you update an existing record's attribute?
- post.create(title: "New")
- post.where(title: "New")
- post.find(title: "New")
- post.update(title: "New")
Answer: post.update(title: "New"). post.update(title: "New") changes the attribute and saves it.
Continue this course
- Previous: Views, ERB & Partials
- Next: Associations