ขอบเขตคือส่วนย่อยของคอลเล็กชัน ฟังดูซับซ้อน? มันไม่ใช่ ลองนึกภาพสิ่งนี้:
คุณมีผู้ใช้ ตอนนี้ผู้ใช้บางส่วนสมัครรับจดหมายข่าวของคุณ คุณทำเครื่องหมายผู้ที่ได้รับจดหมายข่าวโดยการเพิ่มฟิลด์ลงในฐานข้อมูลผู้ใช้ (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