Preferred way to disable parts of a RESTful resource?

Hi all -

I've got my RESTful resource all setup. However, there is no editing or destroying allowed. What's the preferred way to disable those?

- remove the action? (don't like this idea) - redirect within the action skipping the actual edit/destroy call? - returning an error? (is there a standard here?)

Thanks!

-philip

remove the action (method) from the controller. if you don't want code to be executed, don't provide the code to execute.

def edit    render '404.html' end

def destroy    render '404.html' end

remove the action (method) from the controller. if you don't want code to be executed, don't provide the code to execute.

The drawback to this is that a RESTful client isn't going to get any
notification about why those actions/verbs don't work. It would be
nice to provide an error message of some sort "This functionality is
intentionally not enabled...." or something.

Doesn't look like there is a preferred way so I'll just roll my own.

Thanks for everyone's replies.

Hi,

According to the HTTP specs, when a particular request method isn't supported for a resource identified by a URI, server should return 405 HTTP code.

Wojtek

Aloha Philip,

We use:

  def delete     respond_to do |format|       format.html raise(:method_not_allowed)       format.xml {render :xml=>exception, :status=>405}     end   end

for any methods that aren't allowed. As Wojtek said, you are supposed to return a 405 on items that aren't allowed not a 404.

Best of luck,

DrMark