When modifying a model that has a has_one or has_many relationship people usually create form that will submit the id of the selected associated object. Rails takes this into consideration with validations: validate_presence_of :country will validate if country or country_id has been set.
In Rails, providing the associated ID works fine with has_one but if you try to do this with a has_many:
form_for(@country) do |form| form.select :state_ids, @states form.select :state_ids, @states #etc...
The selected state_ids are written to the DB as soon as they're assigned. What's the reasoning behind this? How is one supposed to assign multiple collection ids via a form?
accepts_nested_attributes_for doesn't work out too well either because you're just setting IDs -a field that is explicitly ignored by accepts_nested except when testing whether or not the given params are new.