diff --git a/README.md b/README.md index 106a442..b16a220 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ pairing with smart people at Hashrocket. For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186). -_1441 TILs and counting..._ +_1442 TILs and counting..._ --- @@ -897,6 +897,7 @@ _1441 TILs and counting..._ - [Find Or Create A Record With FactoryBot](rails/find-or-create-a-record-with-factory-bot.md) - [Find Records With Multiple Associated Records](rails/find-records-with-multiple-associated-records.md) - [Force All Users To Sign Out](rails/force-all-users-to-sign-out.md) +- [Generate A Model](rails/generate-a-model.md) - [Generate A Rails App From The Main Branch](rails/generate-a-rails-app-from-the-main-branch.md) - [Generating And Executing SQL](rails/generating-and-executing-sql.md) - [Get A Quick Approximate Count Of A Large Table](rails/get-a-quick-approximate-count-of-a-large-table.md) diff --git a/rails/generate-a-model.md b/rails/generate-a-model.md new file mode 100644 index 0000000..532367e --- /dev/null +++ b/rails/generate-a-model.md @@ -0,0 +1,26 @@ +# Generate A Model + +The `rails` CLI comes with a variety of generators. Perhaps the mostly common +one to use is the _model_ generator. + +The model generator will create a migration and a model file for the entity +that you name. In the following example `Book` will result in a +`app/models/book.rb` file as well as a migration file for a `books` table. +These generators know the singular and plural conventions. + +At the end of the command is a series of field definitions containing the field +_name_ and field _type_. These are used in the migration file for defining +columns on the new table. + +```bash +❯ bin/rails generate model Book title:string publication_date:date author:string + invoke active_record + create db/migrate/20240920223447_create_books.rb + create app/models/book.rb + invoke rspec + create spec/models/book_spec.rb +``` + +You may also notice that an `rspec` action was invoked as part of this +generator. That is because I have the `rspec-rails` gem in my project. That gem +hooks into the model generator so that a model spec also gets generated. Handy!