2010-09-23 9 views

Trả lời

9

tôi đã quản lý để có được Cancan và Mongoid (phiên bản 2) để làm việc với nhau khá tốt trên một đường ray 3 ứng dụng. Vẫn nhận được một số lỗi ở đây và có liên quan đến các điều kiện trong định nghĩa quyền (mô hình Khả năng).

Tôi chỉ đưa các nội dung của ý chính này thành một tập tin trong config/initializers:

Các băm tình trạng gần như tương tự như với ActiveRecord:

# can only manage own account 
can :manage, User, :_id => current_user.id 

Tôi vẫn đang nghiên cứu cách sử dụng Mongoid :: Điều kiện tiêu chí nâng cao hơn, nhưng bạn luôn có thể sử dụng khối để thực hiện các điều kiện phức tạp hơn:

# can only manage own account 
can :eat, Cake do 
    current_user.jobs.any?{ |job| job.title == 'Peasant'} 
end 
+0

Cảm ơn bạn. Hy vọng rằng bạn mở rộng sẽ được thêm vào phiên bản tương lai của đá quý –

+0

Bạn đang chào đón. Mongoid là tuyệt vời và như vậy là CanCan. Tôi sẽ cố gắng tổng hợp một bản vá làm việc cho CanCan để hành vi này được đưa vào thư viện mà không cần thêm bất cứ thứ gì. Nhân tiện, tôi đã thực hiện một số cập nhật quan trọng cho ý chính cho phép các điều kiện phức tạp băm. Tôi khuyên bạn nên sử dụng phiên bản mới nhất, vì phiên bản trước đó tôi đã gây ra một số lỗi khó phát hiện nhưng đáng kể. – bowsersenior

+1

Tiện ích mở rộng của tôi đã được chuyển vào Cancan. Phiên bản mới nhất trên github giờ đây hỗ trợ Mongoid: https://github.com/ryanb/cancan/pull/172 và phiên bản 1.5 từ rubygems cũng sẽ hỗ trợ Mongoid. – bowsersenior