2012-08-11 3 views
1

쇼핑 사이트에는 모든 페이지에서 공통적 인 헤더가 있습니다. 머리글에 장바구니 아이콘을 추가했으며 현재 장바구니의 내용을 기준으로 업데이트됩니다.application_controller.rb에 메소드를 추가하는 경우

이 아이콘에는 current_cart에 대한 정의가 필요하므로 모든 컨트롤러 작업에이 아이콘을 추가해야합니다. 이것은 현명하지 않거나 안전하지 않습니까? 레일스를 처음 접했을 때 응용 프로그램에 메서드를 추가 할 때 발생하는 보안상의 영향을 이해하지 못했습니다.

또한이 작업을 application_controller.rb에 한 번 추가하거나 별도로 추가하는 가장 좋은 방법입니다 각 관련 컨트롤러 작업에?

의견에 미리 감사드립니다.

답변

1

마음에 DRY를 갖는 그것은 당신의 컨트롤러 상속 트리에서 한 번에 한 단계를이 방법을 추가 할 수 확실히 낫다. 모든 컨트롤러에 해당 메소드가 필요한 경우 application_controller.rb가 좋습니다. 그 중 일부만 있으면 ApplicationController에서 상속받은 컨트롤러를 만들고 그 안에 메서드를 저장하고 해당 메서드를 상속해야하는 모든 컨트롤러가 양식을 상속해야한다고 생각할 수 있습니다.

+0

이 말이 맞는 것 같습니다. 두 번째 옵션을 생각하지 못했습니다. 감사! – umezo

0

모든 컨트롤러는 응용 프로그램 컨트롤러를 상속합니다. 즉, 응용 프로그램 컨트롤러에서 정의한 모든 메서드를 다른 모든 컨트롤러에서 사용할 수 있습니다.

+0

고마워, 내가 물어 보려던 것은 application_controller에서 한 번만이 아니라 여러 컨트롤러에서 정의 할만한 이유 (성능, 보안 또는 기타)가 있는지 여부입니다. 나는이 차이를 DRYness라는 뜻으로 받아들입니까? – umezo

관련 문제