Un alcance es un subconjunto de una colección. ¿Suena complicado? No lo es Imagínese esto:
Tiene usuarios. Ahora, algunos de esos usuarios están suscritos a su boletín de noticias. Marcó a los que reciben un boletín agregando un campo a la base de datos de usuarios (user.subscribed_to_newsletter = true). Naturalmente, a veces desea obtener aquellos Usuarios que están suscritos a su boletín de noticias.
Se podría, por supuesto, siempre hacer esto:
User.where(subscribed_to_newsletter: true).each do #something
vez siempre de escribir este se podría, sin embargo, hacer algo como esto.
#File: users.rb
class User < ActiveRecord::Base
scope :newsletter, where(subscribed_to_newsletter: true)
#yada yada
end
Si está utilizando Carriles 4 o más nuevos, debe hacerse lo siguiente:
#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 hacer esto:
User.newsletter.each do #something
Este es un ejemplo muy simple, pero en general los alcances pueden ser herramientas muy potentes para facilitar su trabajo.
Salida este enlace: API Description
posible duplicado de [¿Cuál es la importancia del alcance con nombre en Rails?] (Http://stackoverflow.com/questions/2919730/whats-the-significance-of-named-scope-in-rails) – jdl
This blog post fue invaluable para mí al aprender ámbitos con nombre: http://ryandaigle.com/articles/2008/8/20/named-scope-it-s-not-just-for-conditions-ya-know –
Enlace para ryandaigle ahora encontrado aquí: http://archives.ryandaigle.com/articles/2008/8/20/named-scope-it-s-not-just-for-conditions-ya-know –