Phạm vi là một tập hợp con của một tập hợp. Nghe có vẻ phức tạp? Nó không phải. Hãy tưởng tượng điều này:
Bạn có Người dùng. Bây giờ, một số Người dùng đó đã đăng ký nhận bản tin của bạn. Bạn đã đánh dấu những người nhận được bản tin bằng cách thêm trường vào Cơ sở dữ liệu người dùng (user.subscribe_to_newsletter = true). Đương nhiên, đôi khi bạn muốn có được những Người dùng đã đăng ký nhận bản tin của bạn.
Tất nhiên, bạn có thể luôn làm điều này:
User.where(subscribed_to_newsletter: true).each do #something
Tuy nhiên, thay vì luôn viết điều này, bạn có thể làm điều gì đó như thế này.
#File: users.rb
class User < ActiveRecord::Base
scope :newsletter, where(subscribed_to_newsletter: true)
#yada yada
end
Nếu bạn đang sử dụng Rails 4 hoặc mới hơn , hãy thực hiện việc này thay thế:
#File: users.rb
class User < ActiveRecord::Base
scope :newsletter, -> { where(subscribed_to_newsletter: true) }
#yada yada
end
Điều này cho phép bạn truy cập người đăng ký của mình bằng cách chỉ cần thực hiện điều này:
User.newsletter.each do #something
Đây là một ví dụ rất đơn giản nhưng nhìn chung phạm vi có thể là công cụ rất mạnh để dễ dàng thực hiện công việc của bạn.
Kiểm tra liên kết này: Mô tả API