하나의 컨트롤러에는 다른 컨트롤러와 공유 할 리팩터링 메서드가 있습니다. 동시에 콜백 before_action
에 전달 중입니다.리팩토링 및 콜백
응용 프로그램/모델/meal_controller.rb
def check_for_user
token = request.headers[:token]
if token.nil?
render json: "Unathorized", status: 401
elsif @meal.user.auth_code != token
render json: "Forbidden", status: 403
end
end
그래서와 ApplicationController에 check_for_user
를 이동하고 다음과 같이 수정했다 나의 접근 방식 :
def check_for_user(item)
token = request.headers[:token]
if token.nil?
render json: "Unathorized", status: 401
elsif item.user.auth_code != token
render json: "Forbidden", status: 403
end
end
을 다시 MealController로는 만들 params가없는 다른 "더미"메소드를 호출하고 check_for_user를 호출하십시오.
def check_for_user_meal
check_for_user(@meal)
end
제 질문은 :이 코드를 리팩토링하는 더 좋은 방법이 있습니까?
미리 감사드립니다.
를하지만 난 아니 그들 모두에 만 컨트롤러에 필요한 :
그래서 나는 이런 식으로 코드를 리팩토링 것입니다. – tehAnswer
모듈은 이동하는 길입니다. 그렇지 않다면 도우미로 사용하여 관심있는 컨트롤러에 포함시킬 수 있습니다. – Leon