2011-01-20 22 views
5

Tôi đang thay đổi một số hành động CanCan tùy chỉnh của mình trong lớp Khả năng để sử dụng các khối thay vì chỉ là băm nhưng giờ đây chúng đã thực sự hạn chế quyền truy cập. Điều kỳ lạ là các hành động dựng sẵn như: quản lý và: tạo, vv dường như vẫn hoạt động tốt với các khối.Hành động tùy chỉnh của CanCan không hoạt động với các khối

Đây là một ví dụ:

OLD

# this one works 
can :share, Project, :user_id => user.id 

MỚI

# this one doesn't work 
can :share, Project do |project| 
    project.users.exists?(user) 
end 

Bất cứ ai chạy vào vấn đề này trước đây chưa?

Trả lời

1

Tôi không thể nói nhiều về hành vi không mong muốn của bạn, nhưng có thể bạn không nên thay đổi băm để chặn, vì các băm này cung cấp cho bạn khả năng tìm nạp bản ghi. Đọc this article cẩn thận trong wiki của CanCan.

+0

Hãy tin tôi, tôi không muốn sử dụng các khối nhưng dường như là cách duy nhất để làm điều đó trong trường hợp của tôi. Tôi đã chuyển từ mối quan hệ một-nhiều giữa các dự án và người dùng thành nhiều người, vì vậy bây giờ tôi cần kiểm tra tất cả người dùng trên một dự án, không chỉ một. – Matt

+0

Hmm, hãy thử sử dụng trình gỡ rối và xem điều gì xảy ra ở CanCan khi kiểm tra khả năng. Hoặc mở và chỉnh sửa các tệp của đá quý cancan trên hệ thống tệp của bạn và xem những gì được truyền bằng cách bán các biến. Đây là cách tôi ở trên con đường khi tôi không thể nghĩ ra bất cứ điều gì khác. Tất nhiên sẽ hoàn nguyên các tệp;) – Mirko

Các vấn đề liên quan