質問させてください。

よくない例かもしれないのですが、
person.parents << parent = Parent.new
person.children << GrandParent.new(:grand_parent_id => parent.id)
person.save

みたいなことがしたいのですが、これだとChild.grand_parent_idがnilになってしまいます。
このような場合で、あるテーブルと、そのテーブルにhas_manyな関係のテーブル2つ(合計3つ)を同時にsaveするうまい方法があったら教えていただけないでしょうか??
ご教示頂けると幸いです><