0
0
RailsHow-ToBeginner · 3 min read

How to Use rails generate model in Ruby on Rails

Use the rails generate model ModelName attribute:type command to create a new model with specified attributes in Ruby on Rails. This command creates model files, migration files, and test files to help you build your app's data structure.
📐

Syntax

The basic syntax for generating a model in Rails is:

  • rails generate model ModelName attribute:type

Here, ModelName is the name of your model (usually singular and capitalized), and attribute:type pairs define the data fields and their types.

For example, title:string creates a string attribute called title.

bash
rails generate model ModelName attribute:type attribute:type
💻

Example

This example creates a Post model with a title as a string and body as text.

bash
rails generate model Post title:string body:text
Output
invoke active_record create db/migrate/20240627123456_create_posts.rb create app/models/post.rb invoke test_unit create test/models/post_test.rb create test/fixtures/posts.yml
⚠️

Common Pitfalls

1. Using plural model names: Model names should be singular and capitalized (e.g., Post, not Posts).

2. Forgetting to run migrations: After generating the model, run rails db:migrate to apply changes to the database.

3. Incorrect attribute types: Use valid Rails types like string, text, integer, boolean, etc.

bash
Wrong:
rails generate model posts title:string

Right:
rails generate model Post title:string
📊

Quick Reference

CommandDescription
rails generate model ModelName attribute:typeCreates a new model with attributes and migration
rails db:migrateRuns the migration to update the database schema
rails generate model Post title:string body:textExample creating Post model with title and body
rails generate model User name:string age:integerExample creating User model with name and age

Key Takeaways

Use singular, capitalized model names with rails generate model.
Specify attributes with their types to define model fields.
Always run rails db:migrate after generating a model.
Common attribute types include string, text, integer, and boolean.
Check your command syntax to avoid common mistakes like plural model names.