Last stupid question today

(well, from me anyway. I promise)

Trying to follow the “Self-referential Many-to-Many Relationships”
recipe
from the Rails Recipes book.

This is what I’m doing: Tasks can have a predecessor relationship with
each
other. My Task class has this:

has_and_belongs_to_many :predecessors,
  :class_name => "Task",
  :join_table => "predecessor",
  :association_foreign_key => "predecessor_id",
  :foreign_key => "task_id"

The join table predecessor looks like this:

CREATE TABLE predecessor (
predecessor_id BIGINT NOT NULL,
task_id BIGINT NOT NULL
);

if I create two tasks t1 and t2 and make t2 a predecessor of t1 (like
so:
t1.predecessors << t2),
then I can access t2 in memory ala t1.predecessors[0]. but calling save
on
t1 has no effect on
persisting the predecessor relationship and if I populate the join table
manually to create predecessors for t1,
t1.predecessors still returns [].

In my environment I have:
ActiveRecord::Base.pluralize_table_names = false

and in any case I’ve tried both :join_table => “predecessor” , and
:join_table => “predecessors” with the same result.

what am i doing wrong?