Rails can generate a lot of things for you. Personally I use generate model often to quickly setup a new model, including test files and a database migration. In its simplest form it looks like this:
rails generate productThis will get you started with a naked Product model. To make things easier, you can also supply attribute names:
rails generate product name description:text Optionally, you can tell the generator what type of attribute you want. You can choose from the same types as you’d normally use in your migration:
- integer
- primary_key
- decimal
- float
- boolean
- binary
- string
- text
- date
- time
- datetime
Now, that’s not where it ends. Here are some more useful tricks:
You can specify that your model references another. Our Product might belong_to a Category.
rails generate product category:referencesThis generates the category_id attribute automatically. In some cases you might want to use a polymorphic relation instead, no problem:
rails generate product supplier:references{polymorphic}Limits For string, text, integer and binary fields, you can set the limit by supplying it in curly braces:
rails generate product sku:string{12}For decimal you must supply two values for precision and scale:
rails generate product price:decimal{10,2}Indices / Indexes You can also set indices (unique or not) on specific fields as well:
rails generate product name:string:index
rails generate product sku:string{12}:uniq
rails generate product supplier:references{polymorphic}:indexPassword digests and tokens If you want to store password digests using has_secure_password, you can also use the digest type.
rails generate user password:digestAnd the same goes for has_secure_token.
rails generate user auth_token:tokenSample
bin/rails g model Supplier name:string
bin/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
bin/rails g model invoice data_paid:datetime invoice_number:uniq fee:decimal{8.2} tax:decimal{8.2} total_amout:decimal{8.2} payment_type:integer site:references
bin/rails g scaffold Article title images:attachments