Un ámbito es un subconjunto de una colección. ¿Suena complicado? No lo es. Imagina esto:
Tienes usuarios. Ahora, algunos de esos usuarios están suscritos a su boletín. Marcó a aquellos que reciben un boletín agregando un campo a la Base de datos de usuarios (user.subscriptions_to_newsletter = true). Naturalmente, a veces desea obtener aquellos Usuarios que están suscritos a su boletín.
Por supuesto, siempre puedes hacer esto:
User.where(subscribed_to_newsletter: true).each do #something
Sin embargo, en lugar de escribir esto siempre, podrías hacer algo como esto.
#File: users.rb
class User < ActiveRecord::Base
scope :newsletter, where(subscribed_to_newsletter: true)
#yada yada
end
Si está usando Rails 4 o más reciente , haga esto en su lugar:
#File: users.rb
class User < ActiveRecord::Base
scope :newsletter, -> { where(subscribed_to_newsletter: true) }
#yada yada
end
Esto le permite acceder a sus suscriptores simplemente haciendo esto:
User.newsletter.each do #something
Este es un ejemplo muy simple pero, en general, los alcances pueden ser herramientas muy poderosas para facilitar su trabajo.
Consulte este enlace: Descripción de API