Tôi đã nhìn thấy rất nhiều bài đăng về vấn đề này, nhưng dường như không có vấn đề nào giải quyết được vấn đề của tôi. Tôi có một default_scope
trên một mô hình như vậy:Đường ray 3.1.3 phạm vi chưa được kiểm tra
default_scope where(:is_active => true).order('LOWER(table.name)');
Tôi có khác phạm vi (bình thường), và tôi muốn tạo ra một phạm vi inactive
sử dụng unscoped
. Tôi muốn xác định nó như là một phạm vi, nhưng nó chỉ hoạt động khi được định nghĩa là một phương pháp học:
# works
def self.inactive
unscoped { where(:is_active => false) }
end
# none of these work
scope :inactive, unscoped { where(:is_active => false) }
scope :inactive, with_exclusive_scope { where(:is_active => true) }
scope :inactive, unscoped.where(:is_active => false)
scope :inactive, lambda { unscoped { where(:is_active => false) } }
scope :inactive, unscoped { lambda { where(:is_active => false) } }
unscoped do
scope :inactive, where(:is_active => false)
end
Có cách nào mà tôi bị mất, hay tôi phải sử dụng một phương pháp học để xác định phạm vi này?
Loại tương tự như http://stackoverflow.com/questions/6919307/rails-3-default-scope-scope-with-overrride –
(nếu bạn đọc các bình luận ở đó, không thực sự là một giải pháp) –
Tôi cũng sẽ nói vào 'except' và' only' nhưng chúng dường như không phủ nhận 'default_scope' từ trong phạm vi khác, tương tự như vấn đề với' unscoped' và 'with_exclusive_scope'. –