9206


A table生成時にbefore_createで B tableを生成した場合  
AとBのprimary_keyは必ず同一となるのでしょうか？


CC BY-SA 3.0
2015-04-15T12:07:08.473
9205
2015-04-15T12:48:20.000
9161
question
ruby-on-rails
Rails4 before_createのモデル一貫性は絶対?


なりません。

例えば、同じ処理が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](http://guides.rubyonrails.org/association_basics.html)


CC BY-SA 3.0
2015-04-15T12:48:20.000
9206
2015-04-15T12:48:20.000
5793
9205
answer