2010-07-30 9 views
12

Trong tài liệu của Cancan nó cho thấy làm thế nào để lấy tất cả hồ sơ truy cập (trong http://wiki.github.com/ryanb/cancan/fetching-records) theo cách này:Current_ability trong cancan's accessible_by (tìm nạp bản ghi) là gì?

@articles = Article.accessible_by(current_ability) 

nhưng là những gì current_ability? Tôi đã thử đi qua các người dùng hiện hành mà tôi đang sử dụng để xác thực và ủy quyền, nhưng tôi đã có lỗi này:

NoMethodError: undefined method `conditions' for #<User:0x1092a3b90> 

Bất kỳ ý tưởng những gì tôi cần phải vượt qua để accessible_by hoặc có gì sai ở đây?

Trả lời

10

CanCan mở rộng ActionController::Base với phương thức current_ability (trong số các loại khác), là lớp mà bạn ApplicationController nên kế thừa từ đó. Vì vậy, mã ví dụ trong câu hỏi của bạn sẽ hoạt động như cũ.

+6

Bạn cũng có thể vượt qua khả năng của riêng mình bằng cách sử dụng một thể hiện của lớp khả năng bạn đã xác định. Các lớp khả năng là một trong đó bao gồm CanCan :: Khả năng, và bạn có thể sử dụng nó như vậy: Ability.new (current_user) –

+1

tôi đoán nhiều người tự hỏi câu hỏi này. có lẽ tài liệu wiki nên được cập nhật? –