2012-06-29 11 views
12

Tôi đang sử dụng CanCan để ủy quyền. Tôi định nghĩa các quy tắc người dùng-action-user trong /app/config/ability.rb và nó hoạt động tốt. Tôi đã thêm dòng load_and_authorize_resource vào application_controller của tôi và mọi thứ đã hoàn tất.CanCan và bộ điều khiển không có mô hình

Tuy nhiên, tôi cũng có nhiều chế độ xem và bộ điều khiển không có mô hình bên dưới. Ví dụ: cố gắng tải trang thống kê cho

NameError (uninitialized constant Statistic): 
    activesupport (3.2.3) lib/active_support/inflector/methods.rb:229:in `block in constantize' 
    activesupport (3.2.3) lib/active_support/inflector/methods.rb:228:in `each' 
    activesupport (3.2.3) lib/active_support/inflector/methods.rb:228:in `constantize' 
    ... 

Có cách nào để CanCan làm việc với bộ điều khiển + hành động thay vì mô hình + hành động không?

Trả lời

22

Sử dụng authorize_resource :class => false trong bộ điều khiển của bạn. Cancan sẽ tự động kiểm tra khả năng vào tên của bộ điều khiển (như một biểu tượng, đặc biệt, ví dụ như :statistic cho StatisticsController)

Xem https://github.com/ryanb/cancan/wiki/Non-RESTful-Controllers

+0

Nếu bạn đang sử dụng phương thức load_and_authorize_resource, không cần phải đề cập class => false.cancan sẽ kiểm tra và tìm kiếm nó như mặc định. –

+2

@MadhanAyyasamy Tôi không nghĩ như vậy – Nithin

+0

@MadhanAyyasamy load_and_authorize_resource ngắt nếu bạn không nói với nó rằng không có mô hình cho bộ điều khiển đó ... –

0

bạn có thể sử dụng đá quý này cancacan "https://github.com/piedoom/cancancan", nơi những người đang tìm kiếm cập nhật đá quý cancan vào phiên bản của đường ray mới