Tôi đã xem xét hơn 10 trang cố gắng tìm lợi ích của phạm vi trên bất kỳ phương thức lớp ActiveRecord nào khác trả về một ActiveRecord :: Quan hệ.Lợi ích thực sự của phạm vi
Trong ví dụ sau đây là lý do tại sao phạm vi tốt hơn so với phương án dưới nó mà làm điều tương tự:
#scope :pat1, lambda {{:conditions => ["name like ?", 'J%']}}
#scope :pat2, lambda {{:conditions => ["id > 5"]}}
def self.pat1
where("name like ?", 'J%')
end
def self.pat2
where("id > 5")
end
def patx
self.class.pat1.pat2.first
end
Các tài liệu hơn và hơn nữa nói rằng phạm vi có lợi vì họ có thể bị xiềng xích ...
"Tất cả các phương thức phạm vi sẽ trả về đối tượng ActiveRecord :: Relation sẽ cho phép các phương thức khác (chẳng hạn như phạm vi khác) được gọi trên đó." - guides.rubyonrails.org
"Phạm vi lý do chính là tốt hơn so với các phương pháp lớp đơn giản là họ có thể bị xiềng xích với các phương pháp khác" http://ruby.railstutorial.org
... nhưng thay thế ở trên cũng có thể được xích sản xuất cùng một kết quả.
Chỉ cố gắng tìm hiểu xem có điều gì mới về quần áo của hoàng đế đang diễn ra ở đây không. Ngay cả từ quan điểm cú pháp, dường như không có lợi ích gì. Có phải họ nhanh hơn - một số nguồn tin mơ hồ gợi ý điều đó.
Arel Tôi giả sử có nghĩa là ActiveRecord :: Quan hệ. ĐƯỢC. Các lợi ích cú pháp có vẻ gây tranh cãi với tôi. Nhưng nếu họ đã làm một cái gì đó mà các phương pháp tiêu chuẩn không thể làm trong các phiên bản trước đó thì giải thích nó. – Mark
Với đường ray sử dụng cú pháp tốt hơn là quan trọng. Không dành cho cơ sở mã tại ngày 1 (hoặc thậm chí 100) nhưng đối với cơ sở mã tại ngày 1000. –