problem with checkboxes updating table

I'm having issues getting checkboxes to update a cross-reference table correctly. I keep seeing entries in the locations_users table, for location_id and user_id, "11" and "2", respectively. The user id is fine, but there is no such location with id 11. There are only 5 locations and their ids go from 1-5! I can't seem to find where the 11 is coming from.

This is in the view: <% Location.find(:all).each do |location| %>   <input type="checkbox"          name="user[locations_ids]"          value="<%= location.id %>"          <% if @user.locations.include?(location) %> checked="checked" <% end %> />            <%= location.name %> <% end %> This is in the controller: [code=]def edit   @user = User.find(params[:id])   @locations = Location.find(:all)   @locationsusers = LocationsUser.new end

def update   @user = User.find(params[:id])   @locations = Location.find(:all)   @locations.each do |location|     @locationsids = location.id   end   @locationsusers = LocationsUser.new(params[:locations_users])   @locationsusers.user_id = @user.id   @locationsusers.location_id = @locationsids.id   if @locationsusers.update_attributes(params[:locations_users])     flash[:notice] = 'User was successfully updated.'     redirect_to :action => 'list'   else     render :action => 'edit'   end end Have a look at the relevant parts of the output and notice how the line...

"SELECT * FROM locations INNER JOIN locations_users ON locations.id = locations_users.location_id WHERE (locations_users.user_id = 2 )"

is not repeated in the 'update' action:

Processing UserController#edit Parameters: {"action"=>"edit", "id"=>"2", "controller"=>"user"} User Columns (0.001195) SHOW FIELDS FROM users User Load (0.000083) SELECT * FROM users WHERE (users.`id` = 2) LocationsUser Columns (0.000656) SHOW FIELDS FROM locations_users Location Load (0.000129) SELECT * FROM locations Rendering within layouts/user Rendering user/edit       Location Load (0.000114) SELECT * FROM locations       Location Columns (0.000900) SHOW FIELDS FROM locations       Join Table Columns (0.000558) SHOW FIELDS FROM locations_users       Location Load (0.000327) SELECT * FROM locations INNER JOIN locations_users ON locations.id = locations_users.location_id WHERE (locations_users.user_id = 2 )

Processing UserController#update Parameters: {"user"=>{"locations_ids"=>["1", "3"]}, "commit"=>"Save Data", "action"=>"updateLocation", "id"=>"2", "controller"=>"user"} User Columns (0.001231) SHOW FIELDS FROM users User Load (0.000087) SELECT * FROM users WHERE (users.`id` = 2) Location Load (0.000133) SELECT * FROM locations Location Columns (0.000906) SHOW FIELDS FROM locations LocationsUser Columns (0.000687) SHOW FIELDS FROM locations_users SQL (0.000068) BEGIN SQL (0.000209) INSERT INTO locations_users (`location_id`, `user_id`) VALUES(11, 2) SQL (0.004631) COMMIT