📖 Scenario: You are building a simple blog application using Ruby on Rails. Rails follows the Convention over Configuration principle, which means it assumes certain defaults so you write less code. This project will help you see how Rails conventions reduce the need for extra setup.
🎯 Goal: Create a Rails model and controller using Rails naming conventions so that Rails automatically connects them without extra configuration.
📋 What You'll Learn
Create a Rails model named Article with attributes title and content
Create a controller named ArticlesController following Rails naming conventions
Use Rails default routing conventions for the ArticlesController
Use Rails conventions to render the default view without extra configuration
💡 Why This Matters
🌍 Real World
Most Rails applications rely on conventions to speed up development and reduce errors by following standard naming and file structure.
💼 Career
Understanding Rails conventions is essential for working efficiently on Rails projects and collaborating with other developers.
Progress0 / 4 steps
1
Create the Article model with attributes
Create a Rails model called Article with string attribute title and text attribute content using the Rails generator command.
Ruby on Rails
Hint
Use the rails generate model command with the model name Article and attributes title:string and content:text.
2
Create the ArticlesController
Create a Rails controller named ArticlesController using the Rails generator command. This controller will follow Rails naming conventions automatically.
Ruby on Rails
Hint
Use the rails generate controller command with the pluralized model name Articles.
3
Use Rails default routing for Articles
Add a resourceful route for articles in the config/routes.rb file using the Rails resources method to follow convention over configuration.
Ruby on Rails
Hint
Open config/routes.rb and add resources :articles inside the Rails.application.routes.draw do ... end block.
4
Render the default view for ArticlesController#index
In the ArticlesController, add an index action that fetches all articles using @articles = Article.all. Rails will automatically render the index.html.erb view without extra configuration.
Ruby on Rails
Hint
Define the index method inside ArticlesController and assign @articles = Article.all. Rails will use the default view app/views/articles/index.html.erb.
Practice
(1/5)
1. What does the Convention over configuration principle in Rails primarily help with?
easy
A. Automatically generating user interface designs
B. Reducing the amount of setup code by following naming rules
C. Making Rails apps run faster by optimizing queries
D. Forcing developers to write detailed configuration files
Solution
Step 1: Understand the principle's goal
Convention over configuration means Rails guesses what you want if you follow its naming rules.
Step 2: Identify the main benefit
This reduces the need to write extra setup or configuration code manually.
Final Answer:
Reducing the amount of setup code by following naming rules -> Option B
Quick Check:
Convention over configuration = less setup code [OK]
Hint: Think: Rails guesses if you follow rules, so less setup [OK]
Common Mistakes:
Confusing it with performance optimization
Thinking it forces more configuration files
Assuming it auto-generates UI designs
2. Which of the following is the correct Rails convention for naming a model class representing users?
easy
A. class User < ApplicationRecord
B. class users < ApplicationRecord
C. class user < ApplicationRecord
D. class USER < ApplicationRecord
Solution
Step 1: Recall Rails naming conventions for models
Model class names are singular and start with a capital letter, e.g., User.
Step 2: Check syntax correctness
class User < ApplicationRecord uses correct class name capitalization and inherits from ApplicationRecord.
Final Answer:
class User < ApplicationRecord -> Option A
Quick Check:
Model class names are singular and capitalized [OK]
Hint: Model names are singular and capitalized classes [OK]
Common Mistakes:
Using plural or lowercase class names
Not capitalizing the class name
Using all uppercase letters
3. Given a Rails model named Article, which database table name will Rails expect by convention?
medium
A. articles
B. article
C. Article
D. article_table
Solution
Step 1: Recall Rails table naming convention
Rails expects database tables to be plural lowercase versions of model names.
Step 2: Apply to the model 'Article'
The plural lowercase form is 'articles'.
Final Answer:
articles -> Option A
Quick Check:
Model 'Article' maps to table 'articles' [OK]
Hint: Model name pluralized lowercase = table name [OK]
Common Mistakes:
Using singular table names
Using capitalized table names
Adding extra suffixes like '_table'
4. You created a model class class Person < ApplicationRecord but named the database table people_data. What is the main issue here?
medium
A. Rails will use the people_data table without problems
B. Rails will automatically find the table despite the name difference
C. Rails will raise an error because the table name does not follow convention
D. Rails will ignore the model and use a default table
Solution
Step 1: Understand default table naming
Rails expects the table name to be the plural form of the model name, here 'people'.
Step 2: Check mismatch impact
Since the table is named 'people_data', Rails won't find it automatically and will raise an error unless explicitly told.
Final Answer:
Rails will raise an error because the table name does not follow convention -> Option C
Quick Check:
Table name mismatch causes error unless configured [OK]
Hint: Table name must match plural model name or configure explicitly [OK]
Common Mistakes:
Assuming Rails guesses any table name
Thinking Rails silently ignores the model
Believing Rails auto-corrects table names
5. You want to create a Rails controller for managing blog posts. According to convention, which controller class name and file path are correct?
hard
A. class BlogPostController < ApplicationController in app/controllers/blog_post_controller.rb
B. class blogpostscontroller < ApplicationController in app/controllers/blogposts_controller.rb
C. class BlogPosts < ApplicationController in app/controllers/blog_posts.rb
D. class BlogPostsController < ApplicationController in app/controllers/blog_posts_controller.rb
Solution
Step 1: Recall controller naming conventions
Controllers are plural, camel case with 'Controller' suffix, e.g., BlogPostsController.
Step 2: Recall file path conventions
File names are snake_case plural with '_controller.rb' suffix, e.g., blog_posts_controller.rb.
Final Answer:
class BlogPostsController < ApplicationController in app/controllers/blog_posts_controller.rb -> Option D
Quick Check:
Controller class plural + Controller suffix, file snake_case plural [OK]
Hint: Controller class plural CamelCase + file snake_case plural_controller.rb [OK]
Common Mistakes:
Using singular controller class names
Incorrect file naming or casing
Omitting 'Controller' suffix
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.