Saving associated objects without whitelisting their _id field

Hello,

I’ve been struggling for a while with a problem. I have the following
(slightly simplified) structure:

Services

fields:

name

has_many :service_city_taxations, :dependent => :destroy
has_many :cities, :through => :service_city_taxations

accepts_nested_attributes_for :service_city_taxations, :allow_destroy
=>
true

ServiceCityTaxations

fields:

service_id

city_id

local_taxation_rate

attr_accessible :city_id, :city_sales_tax_code,
:city_sales_tax_rate,
:service_id

belongs_to :city
belongs_to :service

Cities

fields:

name

has_many :service_city_taxations, :dependent => :destroy
has_many :services, :through => :service_city_taxations

Now, I work with services in the services view and I use nested forms to
create ServiceCityTaxations directly along with my Services. I create
and
save them and everything works perfectly well.
However, I want to make this work* without having to allow the city_id
attribute in my ServiceCityTaxations’* attr_accessible, since that’s
something the user picks himself. If I take city_id out of my
attr_accessible parameters, Rails obviously ignores it during my mass
assignment (update_attributes or save), since it’s an attribute that
isn’t
in my whitelist.
I was wondering if there’s some way for me to load up my City object in
the
controller before calling my update_attributes and then save my
ServiceCityTaxations with the whole City object instead of only with the
id
or something like that. That way I could avoid whitelisting city_id at
all,
but there’s also the problem of dealing with nested form results from
has_many associations in the controller, since the params hash gets
quite
messy.

I hope I was able to explain my situation. Any help is greatly
appreciated.

Thanks!