私はFormObject
、ユーザーを作成する登録用と、メソッド内の彼のための多くのモデルを持っています。create
def create
ActiveRecord::Base.transaction do
@user = User.create(@params[:user])
process_bonuses_for_user
process_actions_for_user
# et.c., giant amount of methods
end
@user.persisted? # to return the true of false to controller
end
の奇妙な行動に出会いましたFormObject
。正常に実行された (多くのモデルを作成した) か失敗した (保存しない) 場合でもid
、User
モデルは自動インクリメントされます。したがって、ユーザーFormObject
の次の値をインクリメントして何かを保存しようとするたびに。id
これは正常にUser
作成された場合の正常な状況ですが、ユーザーが登録フォームを間違えた場合は正常ではありません。
この予測不可能な動作を無効にするにはどうすればよいですか?
PSメソッド@user = User.new(@params[:user])
の開始時と終了時に書くとすべてがうまくいくことはわかっていますが、多くの関連付けがあり、モデルにたくさん書きたくありません。create
@user.save
autosave
inverse_of
PPS 私はpostgresql-9.4
ユーザーです