Restful design is a headache?

view one = show, view many = index, whether its the admin viewing
products, or a user viewing products, there's just one HTTP verb and url
pattern in use...
/products/ as a GET request.

If it were /products/ as a POST request, it better be accompanied by
sufficient parameters to define the new product resource, since that's a
RESTful create request pattern.

The basis of REST is the four HTTP 'verbs' GET, PUT, POST, DELETE.

Rails scaffolding builds REST out with 'standard' methods of:

index, show, new, edit, create, update, destroy

which pair a url pattern with one of the four HTTP request types

index:
/plural_resource_name/ + GET - return a collection of the desired
resource

create:
/plural_resource_name/ + POST - create a new instance of the resource

new:
/plural_resource_name/new + GET - return a new instance of the resource

show:
/plural_resource_name/id + GET - return a single instance of the
resource

update:
/plural_resource_name/id + PUT - update a single instance of the
resource

destroy:
/plural_resource_name/id + DELETE - destroy a single instance of the
resource

I guess there isn't much information on this, but you might want to
look at well written source code for inspiration.

something like:

map.resources :shops, :has_many => [:products], :shallow => true

map.resources :products, :controller => "manage_products"

This means that you will have 3 controllers; one for shops and two for
products.

One product controller will be used for showing and will be accessed
as a nested resource of shops. The other will act as a stand alone
resource, but will be password protected.

This may not be the best design for your needs, but I hope you can
improve on it.