For what I could understand, it works like each of the STI sub classes had it's own table (although in the database they use the same, named after it's parent). So, in the HBTM join table, you should use ID and table name referent to the "illusionary" child table. The migration look's like this:
create_table :daughters_dudes, id: false do |t|
t.belongs_to :daughter
t.belongs_to :dude
end