À chaque fois que je cherche à générer un nouveau modèle avec Rails, je recherche partout les options disponibles.
Je consacre donc cet article à lister les actions possibles lors de la génération de modèles.
Génération simple
Aucune difficulté, il suffit de mettre le nom du modèle suivi des attributs que l'on souhaite pour constituer le modèle.
rails generate model user first_name last_name email
Ou sur plusieurs lignes.
rails generate model
user \
first_name \
last_name \
email
Spécification des types d'attribut
rails generate model user username:string
La liste des types disponibles est la suivante.
- integer
- primary_key
- decimal
- float
- boolean
- binary
- string : de 1 à 255 caractères (255 par défaut)
- text : de 1 à 4294967296 (65536 par défaut)
- date
- time
- datetime
- timestamp
Options
On peut passer des options pour chacun de ces types de la façon suivante. Attention à decimal qui doit être encadré par des '.
rails generate model user username:string{30}
rails generate model product \
'price:decimal{10,2}' \
name:string:index
Lien entre modèles
Il est possible de définir que le modèle Admin est issue de User.
rails generate model admin --parent user
Ce qui génère le modèle suivant.
ruby
class Admin < User
end
Définir des contraintes
rails generate model user email:index location_id:integer:index
rails generate model user pseudo:string:uniq
rails generate model user username:string{30}:uniq
Clé étrangères
rails generate model product store:references
Ce qui génère le modèle suivant.
class Product < ActiveRecord::Base
belongs_to : store
end
Les références polymorphiques.
rails generate model picture imageable:references{polymorphic}
class Picture < ActiveRecord::Base
belongs_to :imageable, polymorphic: true
end
Il reste tout de même à ajouter le has_many
as::
dans les modèles liés.
class Employee < ActiveRecord::Base
has_many :pictures, as: :imageable
end
class Product < ActiveRecord::Base
has_many :pictures, as: :imageable
end