Область видимости - это подмножество коллекции. Звучит сложно? Это не так. Представьте себе это:
У вас есть пользователи. Теперь некоторые из этих пользователей подписаны на вашу рассылку новостей. Вы отметили тех, кто получает информационный бюллетень, добавив поле в базу данных пользователей (user.subscribed_to_newsletter = true). Естественно, иногда вы хотите получить тех пользователей, которые подписаны на вашу рассылку.
Конечно, вы всегда можете сделать это:
User.where(subscribed_to_newsletter: true).each do #something
Однако вместо того, чтобы всегда писать это, вы можете сделать что-то вроде этого.
#File: users.rb
class User < ActiveRecord::Base
scope :newsletter, where(subscribed_to_newsletter: true)
#yada yada
end
Если вы используете Rails 4 или новее , сделайте это:
#File: users.rb
class User < ActiveRecord::Base
scope :newsletter, -> { where(subscribed_to_newsletter: true) }
#yada yada
end
Это позволяет вам получить доступ к своим подписчикам, просто выполнив следующие действия:
User.newsletter.each do #something
Это очень простой пример, но в целом области могут быть очень мощными инструментами, облегчающими вашу работу.
Проверьте эту ссылку: Описание API