Повторяющаяся ошибка ввода - PullRequest
0 голосов
/ 10 марта 2011

Я пытаюсь сохранить две модели в базе данных.

ПОЛЬЗОВАТЕЛЬ и СОВЕТ.

Я делаю следующее в контроллере:

 if params_posted?(:user)
               @user = User.new(params[:user].merge :password => generate_random_string)
               @board = Board.new(params[:board])
               @spec =  Spec.new(:birthdate => params[:user][:deliver_on])
               @user.spec = @spec
               @pref = Pref.new
               @board.pref = @pref
if @board.save & @user.save
.
.
.
end

Если информация отсутствует для пользователя, доска все равно сохраняется. Форма отображается с правильным сообщением об ошибке, запрашивающим пользователя исправить недостающую или неверную информацию.

Теперь, когда форма отправляется снова, я получаю следующую ошибку:

mysql::Error: Duplicate entry '1000' for key 'PRIMARY': INSERT INTO `boards

Я не хочу, чтобы запись для досок сохранялась до тех пор, пока пользователь не будет сохранен. Я прочитал о транзакциях и попробовал, но запись все еще была сохранена.

Как я могу остановить это дублирование?

Заранее спасибо

1 Ответ

0 голосов
/ 10 марта 2011

Таким образом, вы должны сначала сохранить пользователя, а затем объект доски. И используйте оператор &&, который обозначает логическое И.

if @user.save && @board.save
  ...
end
...