has_one association and saving the associated model


what's the best way of assigning a has_one association to a model and then
save both, the model and the association, in one step? I
thought "build_association" just assigns the association and not updates it
in the database.

In my current situation this leads to a double saving of my association. First
it get's updated an then a new association gets created.

I've two models: "client" and "birthday". Birthday is a has_one association of

class Client < ActiveRecord::Base
  has_one :birthday, :dependent => :destroy

In the "update" action of the client controller I've something like this:

def update
    @client = Client.find(params[:id])
    @client.attributes = params[:client]

    respond_to do |format|
        if @client.save
            format.html { redirect_to client_url(@client) }
            format.xml { head :ok }
            format.html { render :action => "edit" }
            format.xml { render :xml => @client.errors.to_xml }

First, when executing the line @client.build_birthday(params[:birthday]), the
current associated birthday object in the database gets updated. Next, when
@client.save gets executed, a new birthday-object gets created in the
database (and the foreign key of the old entry gets deleted). This leads to
many, not assigned entrys in my database.

If I just use @client.birthday.attributes = params[:birthday] instead of
build_birthday, no birthday at all gets saved. So, what's the best was of
assigning a has_one association without saving it?


dear sender,
i�m out of the office until may 29th.
your email will not be forwarded.
for urgent stuff please contact joern@fork.de
kind regards,