# Updating a collection in a RESTful mannerâ€¦

**URL:** <https://www.ruby-forum.com/t/updating-a-collection-in-a-restful-mannera/192913>\
**Category:** Rails\
**Created:** [August 8, 2010, 10:03am UTC](https://www.ruby-forum.com/t/updating-a-collection-in-a-restful-mannera/192913 "2010-08-08T10:03:04Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![timhunter](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/71e660/32.png) [@timhunter](https://www.ruby-forum.com/u/timhunter)\
**Post date:** [August 8, 2010, 10:03am UTC](https://www.ruby-forum.com/t/updating-a-collection-in-a-restful-mannera/192913/1 "2010-08-08T10:03:04Z")

</div>

Hi,

Today I added a checkbox to each row of a table and a save button, to  
perform an Archive operation on N items in the table.

This is essentially an update of the collection.

My initial thought was to PUT to students\_path but only GET and POST  
are allowed using the Rails RESTful routing.

I wound up adding an :collection =\> {:update\_all =\> :put} to the  
students routing and added an appropriate controller method.

I’m not terribly happy with this, stylistically, though,  
pragmatically, it works.

What is the proper way to manage an update to a collection w/o having  
to add an addition method to my controller?

Thanks very much,

-Tim

---

<div class="post-metadata">

**Author:** ![timhunter](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/71e660/32.png) [@timhunter](https://www.ruby-forum.com/u/timhunter)\
**Post date:** [August 9, 2010, 6:58am UTC](https://www.ruby-forum.com/t/updating-a-collection-in-a-restful-mannera/192913/2 "2010-08-09T06:58:00Z")

</div>

I would also like to know the correct way of doing a collection  
update. but I, generally, use ajax for check box, so when user clicks  
on the yes - no check box I make a put request to update 1 record at a  
time.

Aashish

---

<div class="post-metadata">

**Author:** ![timhunter](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/71e660/32.png) [@timhunter](https://www.ruby-forum.com/u/timhunter)\
**Post date:** [August 9, 2010, 11:53am UTC](https://www.ruby-forum.com/t/updating-a-collection-in-a-restful-mannera/192913/3 "2010-08-09T11:53:38Z")

</div>

On 7 August 2010 22:07, Tim H. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> I’m not terribly happy with this, stylistically, though,  
> pragmatically, it works.
> 
> What is the proper way to manage an update to a collection w/o having  
> to add an addition method to my controller?

I don’t think you can avoid having an additional method in the  
controller – after all, the code required to update the collection is  
going to be different from any of your other actions. But you can  
avoid exposing the name of that new method in the URL.

I would try manually defining a new PUT route outside of the existing  
resource map:

map.connect ‘students’, :controller =\> ‘students’, :action =\>  
‘update\_collection’, :conditions =\> {:method =\> :put}

That should route correctly if you have a form with :url =\>  
students\_path, :method =\> :put.

There may be a cleverer/neater way to do this within the resource map  
itself, but this at least is a good first thing to try.

Chris

---

<div class="post-metadata">

**Author:** ![timhunter](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/71e660/32.png) [@timhunter](https://www.ruby-forum.com/u/timhunter)\
**Post date:** [August 11, 2010, 7:14am UTC](https://www.ruby-forum.com/t/updating-a-collection-in-a-restful-mannera/192913/4 "2010-08-11T07:14:44Z")

</div>

@flyerhzm: I quite like the idea of updating the owner of the collection  
in  
the case that there is one. There certainly was in my case, but it feels  
weird to PUT from /school/students to /school, for example.

@chrismear: Your additional route seems cleaner than the :collection =\>  
{:update\_all =\> :put} but the Wikipedia entry for REST seems to suggest  
that  
a PUT to the collection URL should _replace_ the entire collection with  
another collection so perhaps merely updating some attributes of some of  
the  
collection breaks architectural agreement.

On 10 August 2010 09:27, flyerhzm [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > itself, but this at least is a good first thing to try.  
> > For more options, visit this group at  
> > [http://groups.google.com/group/rubyonrails-talk?hl=en](http://groups.google.com/group/rubyonrails-talk?hl=en).

–  
Tim H.

Well Informed Ltd  
Registered in England & Wales  
Company number 06707839  
Registered office: Suite 235, 77 Beak St, London, W1F 9DB

---

<div class="post-metadata">

**Author:** ![timhunter](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/71e660/32.png) [@timhunter](https://www.ruby-forum.com/u/timhunter)\
**Post date:** [August 10, 2010, 10:28am UTC](https://www.ruby-forum.com/t/updating-a-collection-in-a-restful-mannera/192913/5 "2010-08-10T10:28:52Z")

</div>

Here is an advise for “What is the Restful manner for updating a  
collection?”

[http://rails-bestpractices.com/questions/3-what-is-the-restful-manner-for-updating-a-collection](http://rails-bestpractices.com/questions/3-what-is-the-restful-manner-for-updating-a-collection)
