the empty object is there for the case were nothing is selected.
if the empty object was not submitted when nothing is selected in a put request to an update action in a restful controller then the tag_ids collection would not be updated, whatever was in that collection before the request would remain
Lets say tag_ids = [1,2] before request
if there is nothing selected from the multi-select box then nothing is submitted and even though the intention is to remove all tags, this will not take place.
By adding in the empty string that ensures that it will be submitted to the controller as an empty array (or an array with "" as a value). Empty inputs are not submitted by default.
in this case object.tag_ids=[""] which rails will interpret as an empty array, so tag_ids will now be persisted as empty