문제

관리자 섹션과 공개 직면 섹션이있는 웹 앱 설계. "색인"과 "show"를위한 공개 대면 컨트롤러가 약간 중복되는 것처럼 느껴집니다. 내가 읽은 모든 제안은 관리자를위한 네임 스페이스를 제안합니다. 추가 조치가있는 하나의 컨트롤러, "list_public"또는 그와 비슷한 것을 가지고 있어야하는지 궁금합니다.

나는 레일이 새로워지기 때문에 아마도 아무것도 걱정하지 않을 것입니다. 나는이 모든 컨트롤러, 뷰, 동일한 이름을 가진 도우미가 내 프로젝트 디렉토리 전체에 흩어져 있다는 아이디어를 좋아하지 않습니다.

누구든지 이것에 대한 통찰력이 있습니까? 미리 감사드립니다.

도움이 되었습니까?

해결책

컨트롤러 (한 명과 한 명의 관리자)가 모두 최선의 솔루션이라고 말합니다.

이제 당신이 할 수있는 일은 두 컨트롤러가 작업에서 관련 조치를 수행하는 동일한 방법을 호출하는 것입니다.

class MyController < ApplicationController
  def show
    MyModel.do_all_sorts_of_stuff
  end
end

class Admin::MyController < ApplicationController
  def show
    MyModel.do_all_sorts_of_stuff
    # Admin only stuff goes here
  end
end

다른 팁

Matt가 말했듯이, 당신은 또한 이것을 할 수 있습니다.

class MyController < ApplicationController
  def show
    MyModel.do_all_sorts_of_stuff
  end
end

class Admin::MyController < MyController
  def show
    super
    # Admin only stuff goes here
  end
end

즉, 코드를 반복하지 않고 admin :: myController의보다 전문화 된 사례에 집중할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top