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!

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs