Rails4 before_createのモデル一貫性は絶対?

投稿者: Anonymous

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

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *