質問: A table生成時にbefore_createで B tableを生成した場合 AとBのprimary_keyは必ず同一となるのでしょうか?
回答: なりません。 例えば、同じ処理が2つ同時に走った場合、B tableへのINSERTはは処理1が先行し、A tableへのINSERTは処理2が先行する可能性があります。 それ以前の問題として、一度でもB tableへのINSERTが成立したあとA tableへのINSERTが何らかの理由で行われないとずれが生じます。 ActiveRecordの主キーの自動採番はPostgreSQLのserial型やSQLite/MySQLのAUTOINCREMENTを使って実現されていますが、一般論として、この仕組みで特定の数値が設定されることを期待すべきではありません。 A tableとB tableに関連を持たせたいのであれば通常のアソシエーションの仕組みを使えば十分なはずです。参考: Active Record Associations