Right! "PUT" is one of the four http verbs which we use to deal with resource in REST. we use it for updating a resource.
But Using "PUT" to "UPDATE" a resource is wrong in many cases (almost in all update cases in Rails). Let me explain it why...
As per the HTTP standards document RFC 5789 (http://tools.ietf.org/html/rfc5789), HTTP PUT method only allows a complete replacement of a document (resource).
Look at this phrase ---> 'complete replacement' , Now you can understand why "PUT" is not the correct method to update a resource in Rails. If you are still not clear, then read below.
When we update a resource in Rails, the requesting client will never replace the resource completely. We are doing partial updates only like for example, when updating an Active Record model, Rails sets the attribute "updated_at" timestamp, not the requesting client.
So to follow proper HTTP semantics, we should always use "PATCH" method instead of "PUT" to update a resource. The cool thing about "PATCH" is it will support both "Partial" and "Complete" updates.
Good news for Rails developers -> Rails 4 came with "PATCH" verb support for "UPDATE" operations. (Dont worry, its still supporting the old "PUT" method too, but we should avoid using "PUT" moving forward)