modify behavior of updated_at magic field

is it possible to modify magic field updated_at so it will update only
when ceratin columns are changed?

if not, I guess I have to do it on my own. In that case, how do I
tell if a field has changed in the, say, before_save callback?

I guess I can do something like this

def foo=(val)
  if self.foo!=val
      super
      self.foo_changed = true
  end
end

will that do?

Off the top of my head could you do something like this? Give it try.

def updated_at
Time.now if attributes_changed?
end

protected

def attributes_changed?
stale_record = self.reload
self.foo != stale_record.foo
end

Although that does force a read from the database.

HTH,
Nicholas

There are a couple of plugins that provide that:

     http://agilewebdevelopment.com/plugins/acts_as_modified
     http://agilewebdevelopment.com/plugins/activerecordchanged

(I haven't used any.)

-- fxn

You can turn automatic timestamps off this way:

    MyModel.record_timestamps = false

So in a callback you could check whether the columns have been changed with this plugin:

    http://agilewebdevelopment.com/plugins/changed_attributes

and set the flag accordingly.

-- fxn