updating parent resource whenever child is updated

I think the new functionality in edge rails will do what you want:

http://afreshcup.com/2009/04/19/touch-your-active-record-instances/

You say:

class Photo
  belongs_to :user, :touch => true
end

This way, whenever you save or delete a photo instance, it'll 'touch'
its parent user, and update the updated_at timestamp.

This will require you to upgrade to edge rails, though.

Looking at your attempt, though, I'm not sure this is what you want. Are
you also using the "updated_by" attribute of the photo to save the id of
the user that changed it?

Chris

Carlos Santana wrote:

Because the upduser is the same, it doesn't think that the object has really changed, so doesn't update the timestamps.

We had a similar problem where we needed to update the timestamps on the root object of a tree whenever anything in the tree changed. I ended up implementing a touch method on the object, and called that in a before_save hook.

  def touch
    orig_title = self.title
    self.title = ' '
    self.title = orig_title
    self.save
  end

  def after_save_hook
    root.touch
    true
  end

the edge rails code looks much nicer, but it will be a while before we can move to newer rails.

Simon