Cheat Sheets are greate but they are not a substitute for learning the framework and reading the documentation as we most certainly have not covered every potential example here. Please refer to theRails Command Line Docs for more information.
Command Line Generator Info
You can get all of this information on the command line.
rails generate
with no generator name will output a list of all available generators and some information about global options.rails generate GENERATOR --help
will list the options that can be passed to the specified generator.
Rails Generate Examples
Create a Resource
rails generate scaffold Post name:string title:string content:text
Generate Models
rails generate model Post title:string body:text published:boolean
Scaffold with ERB and API namespaced to /api/v1
rails g scaffold categories name:string image:string description:text status:boolean -c=scaffold_controller rails g scaffold_controller api/v1/categories name:string image:string description:text status:boolean --api --model-name=Category
Add Column to Existing Model
rails generate migration AddFieldToModel field:type
Column Types
:primary_key, :string, :text, :integer, :float, :decimal, :datetime, :timestamp, :time, :date, :binary, :boolean
Adding a Unique Property to a Field
rails generate scaffold Post name:string title:string content:text slug:string:uniq
Many to Many Relationship (Reference)
Remember that you do not want an id for the join table, so make sure to add :id => false |t|
create_table assemblies_parts, :id => false do |t| t.integer :assembly_id t.integer :part_idend
If you use rails
rails generate model Assemblies_parts assembly:references part:references
you will have two indexes, but what you want is
add_index :assemblies_parts, [:assembly_id, :part_id], :unique => true
For Rails 5 use create_join_table instead.
Adding Modifiers (Reference)
Modifiers are inserted through curly braces and they allow you to include things such as null and limit.
Add an age to a Friend with a limit
rails g model friend age:integer{2}
Add a price to a product with 2 decimals
rails g model product 'price:decimal{10,2}'
Would result in a migration with ascale
of2
andpercision
of10
class CreateProducts < ActiveRecord::Migration def change create_table :products do |t| ... t.decimal :price, precision: 10, scale: 2 ... t.timestamps null: false end endend
Create a new model with a reference to another model (Reference)
rails g model Supplier name:stringrails g model Product name:string:index sku:string{10}:uniq count:integer description:text supplier:references popularity:float 'price:decimal{10,2}' available:boolean availableSince:datetime image:binary
Resulting migrations:
class CreateSuppliers < ActiveRecord::Migration def change create_table :suppliers do |t| t.string :name t.timestamps null: false end endendclass CreateProducts < ActiveRecord::Migration def change create_table :products do |t| t.string :name t.string :sku, limit: 10 t.integer :count t.text :description t.references :supplier, index: true, foreign_key: true t.float :popularity t.decimal :price, precision: 10, scale: 2 t.boolean :available t.datetime :availableSince t.binary :image t.timestamps null: false end add_index :products, :name add_index :products, :sku, unique: true endend
Polymorphism (Reference)
Suppose your building a collaborative app (like Pivotal Tracker and you want to add comments to projects, tasks, and attachments. You can do that by making comments polymorphic.
rails g model Comment body:text commentable:references{polymorphic}:index
Column Defaults (Reference)
Default migration generator does not handle default values (column modifiers are supported but do not include default or null), but you could create your own generator.
You can also manually update the migration file prior to running rake db:migrate by adding the options to add_column:
add_column :tweet, :retweets_count, :integer, :null => false, :default => 0
... and readRails API
Rspec Generators
rails generate rspec:model widget
will create a new spec file inspec/models/widget_spec.rb
The same generator pattern is available for all specs:
scaffoldmodelcontrollerhelperviewmailerobserverintegrationfeaturejob
Generating specific views
rails g rspec:view widget index edit new show create spec/views/widget create spec/views/widget/index.html.erb_spec.rb create spec/views/widget/edit.html.erb_spec.rb create spec/views/widget/new.html.erb_spec.rb create spec/views/widget/show.html.erb_spec.rb
Top comments(3)

- LocationAustin, TX
- EducationCode Boot Camp at Flatiron in Austin Texas, BA in theatre long before that.
- WorkDevOps Engineer
- Joined
I was in the process of making my own quick reference for rails generators and found yours :) nice job. Still going to make my own but if I can I would like to reference and link to yours as well because mine isn't going to be this detailed.
For further actions, you may consider blocking this person and/orreporting abuse