리소스의 ID로 텍스트 퍼머 링크를 사용하는 Rails 앱의 경로에 대한 RESTful 설정이 있습니다.Ruby on Rails에서 새로운 리소스를 생성 할 때 라우팅 오버랩 없음을 확인하십시오.
는 또한뿐만 아니라 명명 된 자원 예와 중복되는 몇 가지 특별한 이름이 경로가 있습니다 :
# bunch of special URLs for one off views to be exposed, not RESTful
map.connect '/products/specials', :controller => 'products', :action => 'specials'
map.connect '/products/new-in-stock', :controller => 'products', :action => 'new_in_stock'
# the real resource where the products are exposed at
map.resources :products
가 Product
모델은 이름에 따라 영구 링크를 생성하는 permalink_fu을 사용하고, ProductsController
은 조회를 수행 액세스 할 때 permalink 필드에. 그건 모두 잘 작동합니다.
데이터베이스에 새로운 Product
레코드를 만들 때 생성 된 퍼가 링크가 이 아니고이 특수 URL과 중첩되는지 확인하고자합니다. 사용자가 specials
또는 new-in-stock
또는 new
또는 edit
같은 심지어 일반 레일 편안하고 자원의 방법이라는 제품을 만들려고하면
, 나는, 컨트롤러, 라우팅 구성을 조회 모델 객체에 오류를 설정할 대한 검증 실패 새 기록을 남기고 저장하지 마십시오.
알려진 불법 퍼머 링크 이름의 목록을 하드 코딩 할 수는 있지만 그렇게하는 것이 더러워 보입니다. 나는 그것을 자동으로하기 위해 라우팅에 연결하고 싶다.
이것은 이동하는 방법처럼 보이지만 모델에서 라우팅/컨트롤러 로직을 가지고 있고 그것을 분리하려고하는 것에 대해 걱정하지 않아도됩니다. 실제로 시스템에서 모델 *은 라우팅에 의존합니다. 다른 모델과 충돌하는 모델은 유효하지 않습니다. – ideasasylum