1対多 ではあると思うのですが「子カテゴリーの子要素は記事」という捉え方は違っていると思います。「記事はその分類として一つの子カテゴリーを持つ」では無いかと。
親カテゴリー:Category その一つ restaurant
子カテゴリー:SubCategry その一つ french
記事:Articleとして書きます。
config/routes.rb の最後に次のように書けば多分動きます。
get ":category_name/:sub_category_name/:id" , "articles#show"
routesに定義された順番に探して行って、最初にmatchした行を採用します。
/restaurant/french/:id
というrouteがその前に定義されていなければ最後にhitし、params["category_name" =>"restauant", "sub_category_name"=>"french","id"=>"123"]
という
パラメーターが渡るでしょうから、Article.find(params[:id])
でとれます。
多分
仮に get "users/roll/:id","users#roll"
というrouteが定義されていたとします。
そこに親カテゴリー:users 子カテゴリー roll という記事のアクセスがあると、articles#show に行かず users#roll に行ってしまいます。
ArticleのIDがあれば記事は特定できるのですから、カテゴリをURLに載せるという意味、意図がわかりません。そこ教えてください。