Область действия - это подмножество коллекции. Звучит сложно? Это не так. Представь себе:
У вас есть пользователи. Теперь некоторые из этих пользователей подписаны на вашу рассылку. Вы отметили тех, кто получает новостную рассылку, добавив поле в базу данных пользователей (user.subscribeed_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