How to Observe a Habtm relationship?

Railsters:

ActiveRecord::Observer is a cute little class that lets you bundle
groups of
after_create and before_update calls together. Don’t call us we’ll call
you.

How can it observe a has_and_belongs_to_many relationship? Mechanically,
we need
to observe changes in the secret models_models table between the two
Models.


Phlip

that’s one of the reasons, why many people (like me)
nearly never use habtm directly, but make the effort
to create the intermediate model by hand and use
the :through option for the final definition.

Maybe there is another trick to get this work, but
the model variant is the common problem solver
in this case. the extra work isn’t that much and you
get a lot of functionality for it. For example you can
add status flags or other additional data to the model
and have more freedom handling creating & deleting
the relationship records.

+1… the hardest part is coming up with the name of the model, but from
there it’s much nicer. :slight_smile:

Brian H. wrote:

+1… the hardest part is coming up with the name of the model, but from
there it’s much nicer. :slight_smile:

Been there done that. But are we admitting a gap in ActiveRecord’s
contract?

Confer the habtm directive already supports :after_add => :my_method. We
discovered this gap by attempting to move :my_method into the common
observer…


Phlip