2011-08-08 5 views
1

네임 스페이스 (관리 섹션)가있는 응용 프로그램에서 작업하고 있습니다. 2 개의 컨트롤러를 생성하지 않는 DRY 솔루션이 있습니까? 사용자를 관리하려면 공용 사용자 컨트롤러와 관리 사용자 컨트롤러를 만들어야하기 때문입니다.레일에서 네임 스페이스를 사용할 때 이중 컨트롤러가 필요합니까?

+0

질문에 약간 혼란 스럽습니다. 사용자 프로필을 볼 수있는 컨트롤러와 관리자가 컨트롤러를 편집 할 수있게하는 컨트롤러라는 두 개의 컨트롤러가 있으며 둘을 병합하고 싶습니다. 또는 "사용자"라는 개념과 "admin"이라는 개념을 갖고 있으며 어떤 종류의 역할 기반 모델을 사용하여 결합하려는 경우입니까? –

+0

첫 번째. 나는 그들을 병합하는 해결책을 원한다. – Databaas

답변

1

사용자 컨트롤러를 상속하는 것은 어떻습니까? 나는 그것을 (이미지 용으로) 직접 사용하고 멋지게 어울린다 :

# file: apps/controllers/images_controller.rb 
class ImagesController < ApplicationController 
    # image code (to show the image for example) 
end 

# file: apps/controllers/admin/images_controller.rb 
class Admin::ImagesCOntroller < ImagesController 
    # additional admin code (to delete the image for example) 
end 
+0

지금 Admin :: BaseController를 상속하고 있습니다. 하지만 당신이 제안하는 것이 최선의 방법이라고 생각합니다. – Databaas

+0

죄송합니다. 오류가 발생했습니다 : 물론'ImagesController'에는 고유 한 (일반적인) 상속이 있습니다. – Veger

0

선택적 "편집"버튼으로 페이지를 렌더링하는 것이 좋습니다. 이 같은 예를 들어 뭔가 :

Name: <%= @user.name %> 
<% if @user.admin? %> 
<% form_for @user do |f| %> 
    Editing stuff 
<% end %> 
<% end %> 

그런 식으로, 사용자는 페이지로보고 있지만, 관리자는 그 필드를 편집 할 수 있습니다 추가 컨트롤을 본다. 추신 컨트롤러에서 업데이트 호출을 호출하는 관리자인지 확인하고 있는지 확인하십시오.

관련 문제