Zakres to podzbiór kolekcji. Brzmi skomplikowanie? Tak nie jest. Wyobraź to sobie:
Masz użytkowników. Teraz niektórzy z tych Użytkowników są zapisani do Twojego biuletynu. Osoby, które otrzymują newsletter, oznaczyłeś dodając pole do Bazy Użytkowników (user.subscribe_to_newsletter = true). Oczywiście czasami chcesz pozyskać tych Użytkowników, którzy zapisali się do Twojego biuletynu.
Oczywiście zawsze możesz to zrobić:
User.where(subscribed_to_newsletter: true).each do #something
Zamiast zawsze to pisać, możesz jednak zrobić coś takiego.
#File: users.rb
class User < ActiveRecord::Base
scope :newsletter, where(subscribed_to_newsletter: true)
#yada yada
end
Jeśli używasz Rails 4 lub nowszych , zrób to:
#File: users.rb
class User < ActiveRecord::Base
scope :newsletter, -> { where(subscribed_to_newsletter: true) }
#yada yada
end
Dzięki temu możesz uzyskać dostęp do swoich subskrybentów, wykonując po prostu następujące czynności:
User.newsletter.each do #something
To bardzo prosty przykład, ale ogólnie zakresy mogą być bardzo potężnymi narzędziami ułatwiającymi pracę.
Sprawdź ten link: Opis API