Partie 2 – Rails3 - Création des models (rails generate model)
N’hésitez à mettre des commentaires / à corriger mes fautes / à rajouter des choses !Allons-y notre blog a besoin de quelques models :
reader : celui qui laissera un comments sur un post.
post : un article du blog, il possède plusieurs comments.
comment : les commentaires des readers sur un post.
J 'ai volontairement mis en gras des termes pour qu'apparaissent les relations entre les models (ce que nous verrons la prochaine fois).
Comme nous l’avons vu plus haut nous allons utiliser : Rails generate model
La syntaxe est :
Rails generate model monmodel champ:type champ:type...
Voici les types disponibles:
- string (chaine 255 caractères)
- text (texte sans limite de caractère)
- datetime (champs date heure)
- date (champs date)
- integer (entier)
- numeric (champs pour des nombres avec précision)
- float (nombre décimal, à virgule...)
- boolean (booléen : true / false)
Pour notre blog:
rails generate model reader pseudo:string www:string
rails generate model post title:string content:text visible:boolean
rails generate model comment content:text visible:boolean
Nous avons nos models, mais que faire avec des models ?
Ils servent à faire le lien avec la base de données, à gérer les relations entre les models. On ne manipule quasiment plus de sql.
Executez les migrations, nous verrons plus tard de quoi il s’agit mais faites-le !
rake db:migrate
Vous pouvez tester les lignes de code qui suivent en lancant la console (pour quitter la console rails : tapez exit) :
rails console ou rails c
Pour créer un article :
post = Post.new(:title => “Mon titre”, :content => “contenu de mon article”, :visible => false)
post.save
Pour chercher un article par son ID :
post = Post.find(1)
ou
post = Post.where(:id => 1).first
Pour chercher un article par son title :
post = Post.where(:title => “Mon titre”).first
Pour le supprimer :
post.destroy
Rails (ActiveRecord pour être précis) se charge de construire les requêtes sql pour nous.
Attention si vous voyez find_all_by... ou find(:all) c’est vieux c’est rails 2 :-p
Maintenant que vous avez créé vos models vous pouvez aller les voir dans monblog/app/models .
Vous pouvez ajouter des méthodes d’instances (qui s’applique sur l’objet instancié) et des méthodes de classes dans vos models.
Exemple pour notre blog :
class Post < ActiveRecord::Base
# Méthode d’instance qui renvoie le nombre de commentaire
def nb_comment
return self.comments.length
end
# Méthode de classe (précédé de self. ) qui affiche “Méthode de classe”
def self.nb_post
return Post.all.length
end
end
Vous pouvez appeler votre méthode d’instance de cette manière (sur un objet instancié)
post = Post.find(1)
post.nb_comment
Et votre méthode de classe comme ceci (directement sur la classe) :
Post.nb_post
Attention ces 2 méthodes devraient être des scopes, c’est plus adapté mais c’était pour l’exemple.
Prochainement Partie 3 – Création des relations entre les models (détail relation et migration)