2011-09-07 12 views
14

Về bản chất tôi đang tìm kiếm một loại quan hệ không có op để áp dụng cho một chuỗi phạm vi.Làm cách nào để tạo phạm vi ActiveRecord không ảnh hưởng đến truy vấn trong Rails 3 bằng Arel (có lẽ)?

phép nói rằng tôi có một chuỗi các phạm vi:

Post.approved.published.all 

Bây giờ, cho mục đích gỡ lỗi, tôi muốn thực hiện phạm vi published chẳng làm gì cả, do đó chuỗi sẽ chỉ trả lại approved bài viết, bất kể cho dù họ là published hay không.

tôi sẽ quay trở lại gì trong phương pháp sau đây:

def self.published 
    # what to return? 
end 

Trả lời

18

Hãy published một bí danh cho all, hoặc sử dụng scoped để trả về một mối quan hệ mà điều kiện bổ sung có thể được chainged:

def self.published 
    all 
    #or 
    scoped 
end 

tôi sẽ sử dụng phạm vi, trả lại all ...

scope :published, all 

hoặc, làm cho nó một bí danh cho scoped:

scope :published, scoped 
+0

tôi đã chắc chắn tìm kiếm tất cả, nó quá rõ ràng bây giờ tôi không chắc chắn lý do tại sao tôi không nghĩ về điều đó. – jakeonrails

+2

Điều này thực sự cũ, nhưng nếu bạn muốn Relation thay vì một mảng, sử dụng 'scoped' để trả về một phạm vi ẩn danh (Rails 3). –

+0

@ kardeiz Vâng, đây chắc chắn là phương pháp tốt hơn, tôi không biết về nó vào lúc tôi viết câu trả lời này. – meagar