У меня есть FormObject
для регистрации, которая создает пользователь и много модели для него внутри create
метода.Отключить автоинкремент идентификатора внутри ActiveRecord :: Base.transaction
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
создан успешно, но не нормально, когда пользователь делает ошибку в регистрационной форме.
Как я могу отключить это непредсказуемое поведение?
P.S. Я знаю, что все работает, когда я пишу @user = User.new(@params[:user])
в начале create
и @user.save
в конце, но есть много ассоциаций, и я не хочу писать много autosave
или inverse_of
в моих моделях.
P.P.S. Я postgresql-9.4
пользователь
Хм ... Похоже, избыточна – asiniy
Это единственный способ убедиться, что ваш 'transaction' работает. :) – fylooi