has_many :through with join table as a has_many FK issue

I have a join table:

sitedata belongs_to :tb1 belongs_to tb2

has_many :tb3

When I add a relationship in the join table I then add data to the tb3 table and that populates the FK in tb3 with the id of the join table. no problems there.

when I delete the row in the join table the data stays in the tb3 table. how do I get the tb3 data to delete?

Is not has_many supposed to delete the data on the other end when the primary table no longer has a reference?

If I go into the DB and make the FK a constraint with a delete on cascade it works when the data in the join table is deleted.

Your example doesn't make much sense from here, but you'll probably want to look into the various :dependent options to has_many.

--Matt Jones

you have to add :dependent => :destroy in the association

you B table has_many A

then the B model will looks like

has_many :A , :dependent => :destroy

so when you destroy an object of B it will automatically delete all the As that was associated with that B

Here is the layout,

TBa → TBb → TBc > TBd

TBa has_many TBc :through => :TBb

TBb is the join table.

TBb has_many :TBd, :dependent => destroy.

TBd data stays there even though the data in TBb is deleted.

In my program I make the relationship dynamically and then I add data to TBd for the relationship in TBb.

When I delete the relationship in the join table the data still remains in TBd.