RESTful Rails. Kiedy co stosować

Witam!
Czym różnią się (oprócz innych routingów) map.resources i map.resource ? Zawsze posługiwałem się map.resources. Nawet wtedy gdy dana tabela miała mieć tylko i wyłącznie jeden rekord. Kiedy powinno się używać map.resource, a kiedy map.resources?

Map.resource dotyczy resource’ów singletonowych, tj. jednoegzemplarzowych - założenie chyba było takie, żeby implikowało to brak (niekonieczność) podawania ID.

Dla map.resource nie ma index route.

Kiedy uzywac to kwestia gustu/smaku/wyczucia.

np.

Przu logowaniu jest SessionsController (plural wedle konwencji), ale zawsze chodzi nam tylko o jeden egzemplarz sesji ‘moj’ (new/create/destroy) wiec singular jest bardziej na miejscu (nie podajemy id sesji przy destroy)

Jest UsersController i jest ArticlesController, modele User (has_many :articles) i Article (belongs_to :user)

[code]## routes.rb

normalne routes do operacji na userze

map.resources :users

artykul ma jakiegos autora, do kt. chcielibysmy nawigowac intuicyjnie

map.resources :articles do |article|
# /articles/12/author
article.resource :author, :plural => :users

# RAILS 1.2.x
# article.resource :author, :controller => :users

# 1. niezbyt to ladny konstrukt:  /articles/12/user/34
# 2. znajac id artykulu mozemy zidentyfikowac autora
# a ponizsze wprowadza niejednoznacznosc bo ktos moze podac /articles/12/user/24
# i byc pewnym, ze user 24 jest autorem artykulu
# article.resources :users

end

musimy to jeszcze przewidziec w UsersController#show

if params[:article_id]
  @user = Article.find(params[:article_id]).user
else
  @user = User.find(params[:id])
end[/code]

Dlaczego akurat tak to kwestia sporna, bo ktos powie po co dwie kwerendy gdy wystarczy jedna. To moze nie jast najlepszy przyklad, bardziej odpowiednia bylaby relacja User(has_one :profile) - Profile (belongs_to :user). Profile nie istnieje w separacji od usera wiec zagniezdzenie ma jak najb. sens.