Un ambito è un sottoinsieme di una raccolta. Sembra complicato? Non lo è. Immagina:
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.subscribed_to_newsletter = true). Naturalmente, a volte vuoi ottenere quegli utenti che sono iscritti alla tua newsletter.
Si potrebbe, naturalmente, sempre fare questo:
User.where(subscribed_to_newsletter: true).each do #something
Invece di scrivere sempre questo è possibile, tuttavia, fare qualcosa di simile.
#File: users.rb
class User < ActiveRecord::Base
scope :newsletter, where(subscribed_to_newsletter: true)
#yada yada
end
Se stai usando Rails 4 o più recenti, fare questo, invece:
#File: users.rb
class User < ActiveRecord::Base
scope :newsletter, -> { where(subscribed_to_newsletter: true) }
#yada yada
end
questo ti permette di accedere ai vostri 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 semplificare il tuo lavoro.
controlla questo link: API Description
fonte
2011-02-02 02:17:23
possibile duplicato di [Qual è il significato dell'ambito con nome in Rails?] (Http://stackoverflow.com/questions/2919730/whats-the-significance-of-named-scope-in-rails) – jdl
Questo post del blog è stato prezioso per me quando ho imparato gli scope nominati: http://ryandaigle.com/articles/2008/8/20/named-scope-it-s-not-just-for-conditions-ya-know –
Link per ryandaigle ora trovato qui: http://archives.ryandaigle.com/articles/2008/8/20/named-scope-it-s-not-just-for-conditions-ya-know –