CanCan을 사용합니다.N 부모 리소스 중 하나가 존재해야하는 RESTful 컨트롤러를 작성하려면 어떻게해야합니까?
POST /books/123/loans # LoansController#new :book_id => 123
POST /magazines/456/loans # LoansController#new :magazine_id => 456
Books
및 Magazines
는 부모 클래스 Stockable
, 그래서 위의 정보는 다음의 제품에 해당합니다 : 도서관 응용 프로그램으로, Book
또는 Magazine
은 체크 아웃 할 수
POST /stockables/123/loans # LoansController#new :stockable_id => 123
POST /stockables/456/loans # LoansController#new :stockable_id => 456
그러나 모든 Stockable
수 대여 됨 :
# error: can't check out reference books from the library
POST /reference_books/789/loans # LoansController#new :reference_book_id => 789
# same error
POST /stockables/789/loans # LoansController#new :stockable_id => 789
옳은 방법은를 작성하는 것입니다.CanCan을 사용하면 Loanable
의 모든 경로를 만들지 않고도 Loanable
인 모든 것을 처리 할 수 있습니까?
매우 해결책이 아닌 자동으로 고장난 경로 ('POST/reference_books/123/loans')가 계속 노출되므로이 해결책이 마음에 들지 않습니다. –
routes.rb가'/ reference_books/: id/loans'를 노출했다면 실제로 질문 한 것과 관련이 없다는 사실이 아닙니까? 'LoansController'를 작성하여 부서진 경로를 노출시키지 않도록 할 방법이 없습니다. 그것들은 완전히 별개의 서브 시스템입니다 (당신이 알고 있다고 확신합니다). –