Une portée est un sous-ensemble d'une collection. Cela semble compliqué ? Ce n'est pas le cas. Imaginez ceci :
Vous avez des Utilisateurs. Maintenant, certains de ces Utilisateurs sont abonnés à votre bulletin d'information. Vous avez marqué ceux qui reçoivent un bulletin d'information en ajoutant un champ à la base de données des Utilisateurs (user.subscribed_to_newsletter = true). Naturellement, vous voulez parfois obtenir ces Utilisateurs qui sont abonnés à votre bulletin d'information.
Vous pourriez, bien sûr, toujours faire ceci :
User.where(subscribed_to_newsletter: true).each do #quelquechose
Au lieu d'écrire cela tout le temps, vous pourriez cependant faire quelque chose comme ceci.
#Fichier: users.rb
class User < ActiveRecord::Base
scope :newsletter, where(subscribed_to_newsletter: true)
#bla bla
Si vous utilisez Rails 4 ou plus récent, faites ceci à la place :
#Fichier: users.rb
class User < ActiveRecord::Base
scope :newsletter, -> { where(subscribed_to_newsletter: true) }
#bla bla
Cela vous permet d'accéder à vos abonnés en faisant simplement ceci :
User.newsletter.each do #quelquechose
Ceci est un exemple très simple mais en général, les portées peuvent être des outils très puissants pour faciliter votre travail.
Consultez ce lien : Description de l'API
0 votes
Possible duplicate de Quelle est la signification de portée nommée en Rails?
2 votes
Ce billet de blog m'a été très précieux lors de l'apprentissage des portées nommées : ryandaigle.com/articles/2008/8/20/…
1 votes
@notapatch le lien est mort, en auriez-vous un autre ?
0 votes
Ryan Daigle : Portée Nomée : Ce n'est pas seulement pour les conditions, tu sais? : web.archive.org/web/20160306110506/http://…