Я думаю, что синтаксис has_many был добавлен в Rails 2 как сокращение для тех, кому не понравился блочный синтаксис. Вы можете увидеть сообщение в блоге об этом здесь . Я только что попробовал, и кажется, что Rails 3 игнорирует опцию has_many. Таким образом, результат для меня был:
resources :schools do
resources :documents
end
создал маршруты:
school_documents GET /schools/:school_id/documents(.:format) {:action=>"index", :controller=>"documents"}
POST /schools/:school_id/documents(.:format) {:action=>"create", :controller=>"documents"}
new_school_document GET /schools/:school_id/documents/new(.:format) {:action=>"new", :controller=>"documents"}
edit_school_document GET /schools/:school_id/documents/:id/edit(.:format) {:action=>"edit", :controller=>"documents"}
school_document GET /schools/:school_id/documents/:id(.:format) {:action=>"show", :controller=>"documents"}
PUT /schools/:school_id/documents/:id(.:format) {:action=>"update", :controller=>"documents"}
DELETE /schools/:school_id/documents/:id(.:format) {:action=>"destroy", :controller=>"documents"}
schools GET /schools(.:format) {:action=>"index", :controller=>"schools"}
POST /schools(.:format) {:action=>"create", :controller=>"schools"}
new_school GET /schools/new(.:format) {:action=>"new", :controller=>"schools"}
edit_school GET /schools/:id/edit(.:format) {:action=>"edit", :controller=>"schools"}
school GET /schools/:id(.:format) {:action=>"show", :controller=>"schools"}
PUT /schools/:id(.:format) {:action=>"update", :controller=>"schools"}
DELETE /schools/:id(.:format) {:action=>"destroy", :controller=>"schools"}
, а
resources :schools :has_many => :documents
создал маршруты:
schools GET /schools(.:format) {:action=>"index", :controller=>"schools"}
POST /schools(.:format) {:action=>"create", :controller=>"schools"}
new_school GET /schools/new(.:format) {:action=>"new", :controller=>"schools"}
edit_school GET /schools/:id/edit(.:format) {:action=>"edit", :controller=>"schools"}
school GET /schools/:id(.:format) {:action=>"show", :controller=>"schools"}
PUT /schools/:id(.:format) {:action=>"update", :controller=>"schools"}
DELETE /schools/:id(.:format) {:action=>"destroy", :controller=>"schools"}
Я думаю, что реальный ответ на ваш вопрос заключается в том, что они должны были делать то же самое, только с другим синтаксисом.