Un ambito è un sottoinsieme di una raccolta. Sembra complicato? Non lo è. Immagina questo:
Hai utenti. Ora, alcuni di questi utenti sono iscritti alla tua newsletter. Hai contrassegnato coloro che ricevono una newsletter aggiungendo un campo al database degli utenti (user.subscripts_to_newsletter = true). Naturalmente, a volte vuoi ottenere quegli utenti che sono iscritti alla tua newsletter.
Ovviamente potresti sempre farlo:
User.where(subscribed_to_newsletter: true).each do #something
Invece di scrivere sempre questo, potresti, tuttavia, fare qualcosa del genere.
#File: users.rb
class User < ActiveRecord::Base
scope :newsletter, where(subscribed_to_newsletter: true)
#yada yada
end
Se stai usando Rails 4 o più recente , fallo invece:
#File: users.rb
class User < ActiveRecord::Base
scope :newsletter, -> { where(subscribed_to_newsletter: true) }
#yada yada
end
Ciò ti consente di accedere ai tuoi abbonati semplicemente facendo questo:
User.newsletter.each do #something
Questo è un esempio molto semplice, ma in generale gli ambiti possono essere strumenti molto potenti per facilitare il tuo lavoro.
Dai un'occhiata a questo link: Descrizione API