I recommend an observer to do this, and I also recommend using a different
column other than updated_at. I use last_modified_at to store the date that
any part was changed, and reserve updated_at for tracking when the
individual pieces are changed.
Something like this would work, although this is done from memory.
class UpdateObserver < ActiveRecord::Obeserver
observe :project, :task, :note, :attachment
def after_save(record)
if record.is_a? Project
p = record
else
p = record.project
end
p.last_modified_at = Time.now
p.save!
end
def after_destroy(record)
unless record.is_a? Project
p = record.project
p.last_modified_at = Time.now
p.save!
end
end
end
On Thu, Nov 13, 2008 at 7:12 PM, Frederick Cheung <
[EMAIL PROTECTED]> wrote:
>
>
>
> On Nov 13, 10:18 pm, jemminger <[EMAIL PROTECTED]> wrote:
> > working for me in 2.1.2
> >
> > # parent class
> > class Team < ActiveRecord::Base
> > has_many :games
> > end
> >
> > # child class
> > class Game < ActiveRecord::Base
> > belongs_to :team
> > end
> >
> > # unit test
> > require 'test_helper'
> > class GameTest < ActiveSupport::TestCase
> >
> > def test_updates_parent_timestamps
> > team = Team.create(:name => 'Team 1')
> > game = Game.create
> > team.games << game
> >
> > team.save
> >
> > assert team.valid?
> > assert game.valid?
> >
> > old_date = team.updated_at
> > game.team.save
> >
> > assert_not_equal old_date, team.reload.updated_at
> > end
> >
> I expect that passes only because old_date was basically set to
> Time.now (so has a fractional second component), whereas
> team.reload.updated_at is fetched from the database, so the fractional
> portion of the second is lost.
> In rails 2.1 game.team.save is a no-op because only changed attributes
> are saved (and here none are changed). You can force a save by
> modifying any attribute or calling one of the _will_change! methods ie
>
> def touch
> updated_at_will_change!
> save
> end
>
> Fred
>
>
> > end
> >
> > On Nov 13, 3:40 pm, David Warburton <[EMAIL PROTECTED]>
> > wrote:
> >
> > > Jeff Emminger wrote:
> > > > just calling save on the parent association works in my testing, e.g.
> > > > some_child.some_parent.save
> >
> > > > On Nov 13, 10:08 am, David Warburton <[EMAIL PROTECTED]
> >
> > > That was the first thing i tried :(. I have rails 2.1.1.
> > > --
> > > Posted viahttp://www.ruby-forum.com/.
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---