update a field in a second model when creating a new record in a first model? is possible?

Hi, i've got a little problem in my app. When I'm creating a new record in a model, i would like to update a field in a second model with the value of one of the fields of the first model.

Example:

# model Rent ... t.timestamp :date ...

# model Client ... t.timestamp :date_last_rent ...

When I create a new rent rent, I would like to save the rent.date value into client.date_last_rent. So in RentController i do this:

def create     @rent = Rent.new(params[:rent])

    respond_to do |format|       if @rent.save and Client.update_date_last_rent(@rent)           flash[:notice] = "ok"            ...       else          ....          flash[:error] = "ko"       end     end

In my model Client.rb I do this:

  def self.update_fifo_queue(rent)     res = true

    client = Client.find(line.rent_id)     client.update_attribute(:date_last_rent => rent.date)     client.save ? nil : res = false

    return res   end

It works, but i'm not sure about the code in case of error..... If the rent.save fail, the client.date_last_value is modified!!

How can i do to avoid this problem? I've read about after_save/ before_save but i never used it and i can't find examples about it!

Any suggestion is appreciated! Matteo C.

update_attribute performs a save on the model. Instead, just manually set the property:

    client.date_last_rent = rent.date     client.save ? nil : res = false