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 scaffold Post name:string title:string content:text
rails generate model Post title:string body:text published:boolean
rails generate migration AddFieldToModel field:type
:primary_key, :string, :text, :integer, :float, :decimal, :datetime, :timestamp, :time, :date, :binary, :boolean
rails generate scaffold Post name:string title:string content:text slug:string:uniq
rails generate scaffold Post name:string title:string content:text slug:string:uniq
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 a scale of 2 and percision of 10
class CreateProducts < ActiveRecord::Migration
def change
create_table :products do |t|
...
t.decimal :price, precision: 10, scale: 2
...
t.timestamps null: false
end
end
end
Create a new model with a reference to another model Reference
rails g model Supplier name:string
rails 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
end
end
class 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
end
end
rails generate rspec:model widget
will create a new spec file in spec/models/widget_spec.rb
The same generator pattern is available for all specs:
scaffold
model
controller
helper
view
mailer
observer
integration
feature
job
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
Super helpful, thank you! Just a note: you've got this in there twice: https://gist.github.com/cdesch/2f8de645cad1d83aa251c0a20b0f7097#adding-a-unique-property-to-a-field