Movatterモバイル変換


[0]ホーム

URL:


Skip to content
DEV Community
Log in Create account

DEV Community

Alican Kılıç
Alican Kılıç

Posted on • Edited on

     

Rails Generator Cheatsheet

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

Reference

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

Documentation

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

-Article

Top comments(3)

Subscribe
pic
Create template

Templates let you quickly answer FAQs or store snippets for re-use.

Dismiss
CollapseExpand
 
jbshipman profile image
James Shipman
DevOps Engineer
  • Location
    Austin, TX
  • Education
    Code Boot Camp at Flatiron in Austin Texas, BA in theatre long before that.
  • Work
    DevOps 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.

CollapseExpand
 
arthurkulchenko profile image
Artur
  • Joined
• Edited on• Edited

It look like not all of them covered it this post at least default rails

CollapseExpand
 
sshaw profile image
Skye Shaw
  • Joined

Nice. I always forget the unique references stuff.

Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment'spermalink.

For further actions, you may consider blocking this person and/orreporting abuse

Hello My name is Alican My free time to study development, contribute to Open Source projects and improve my English
  • Location
    Niğde, Turkey
  • Joined

Trending onDEV CommunityHot

DEV Community

We're a place where coders share, stay up-to-date and grow their careers.

Log in Create account

[8]ページ先頭

©2009-2025 Movatter.jp