2010-07-06 18 views
5

Một ứng dụng hư cấu Rails có các nguồn sau:Rails chiều của cấu trúc admin/user/bộ điều khiển công

Photographers 
Images 
Comments 

Một Photographer có nhiều Images, có nhiều Comments

Mỗi nhiếp ảnh gia có một tên đăng nhập và có thể xem, tải lên, chỉnh sửa và xóa hình ảnh, nhận xét cũng như hồ sơ của riêng họ.

Giao diện quản trị có sẵn và có thể chỉnh sửa cả hình ảnh, nhiếp ảnh gia và nhận xét.

Hơn nữa, nhiếp ảnh gia, hình ảnh và nhận xét của họ có sẵn từ giao diện công khai mà không cần đăng nhập nơi khách truy cập có thể thêm nhận xét.

Câu hỏi của tôi là: Đường ray của cấu trúc bộ điều khiển là gì? Tôi đã nghĩ đến việc đi với các không gian tên cho mỗi 'vai trò' (công khai, tài khoản, quản trị viên) như sau:

# For administrator 
Admin::PhotographersController 
Admin::ImagesController 
Admin::CommentsController 

# For a logged in photographer 
AccountController (?) 
Account::ImagesController 
Account::CommentsController 

# For public 
PhotographersController 
ImagesController 
CommentsController 

Tuy nhiên - một số phương pháp của các bộ điều khiển này bị chồng chéo. Đây có phải là cách tốt nhất, mặc dù nó không phải là DRY?

Cảm ơn!

Trả lời

3

Nếu chúng chồng chéo, bạn có thể mở rộng bộ điều khiển cơ sở vào không gian tên tài khoản/quản trị viên. ví dụ bạn làm ImagesController của bạn mà là cho các hành động tất cả mọi người có thể nhìn thấy. Điều này mở rộng ApplicationController như bình thường. Sau đó, bạn làm phiên bản quản trị của ImageController và mở rộng ImagesController. Sau đó, bạn thêm/ghi đè các phương thức trong phiên bản quản trị cho các hành vi khác nhau cần thiết hoặc đơn giản như thêm một vài bộ lọc trước chẳng hạn như require_admin, để kiểm tra xem current_user có phải là người dùng quản trị hay không và chuyển hướng chúng đi nếu không phải.

2

như bạn đã nói, điều này không thực sự khô. ít nhất, bạn có thể cấu trúc các tuyến đường và điều khiển hành động cho tất cả các yêu cầu, ví dụ:

resources :photos, :only => [:index, :show] # offer only index and show actions to public 

scope "/admin" do 
    resources :photos # full access for logged in users 
end 

nếu bạn cũng cần chỉ mục và hiển thị hành động, bạn có thể thêm một số kiểm tra bên trong chúng để tải một cái nhìn khác nhau (nói rằng bạn có bố cục công khai và quản trị).

một cách khác có thể là có bố cục duy nhất, không có/admin/phần và cung cấp các tính năng chỉnh sửa cho người dùng đã đăng nhập. vì vậy nếu đã đăng nhập và sở hữu một số ảnh, hãy cho phép chỉnh sửa và hiển thị liên kết ngữ cảnh. đó là vấn đề về sở thích: P

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