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 product
This 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:
Associations#
You can specify that your model references another. Our Product
might belong_to a Category
.
rails generate product category:references
This 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}:index
Password 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:digest
And the same goes for has_secure_token
.
rails generate user auth_token:token
That’s it. Happy generating.