Проблема: не удается создать несколько записей таблицы в каждом цикле - PullRequest
0 голосов
/ 09 февраля 2011

Я пытаюсь перебрать массив в моем контроллере, чтобы создать новых пользователей из массива адресов электронной почты

@emails.each do |email|
  @user = User.new(:email => email)
  @user.save
end

Теперь он всегда создает только одного пользователя, а не нескольких, которые фактически содержит массив.

Я подозреваю, что мне как-то нужно заново инициализировать нового пользователя, поскольку контроллер будет обрабатывать его только в случае его возникновения. Что я делаю не так?

1 Ответ

2 голосов
/ 09 февраля 2011

Вы уверены, что в БД создается только один пользователь? Этот код выглядит нормально, но @user будет ссылаться только на один экземпляр, потому что он будет переустанавливаться на каждой итерации массива.

Если вы хотите получить массив пользователей в конце, лучший способ сделать это - добавить их в массив (для этого вы также можете использовать inject):

@users = []
@emails.each do |email|
  @users << User.create(:email => email)
end

Другая причина может быть в том, что проверки делают запись недействительной. У вас есть какие-либо проверки по электронной почте? Если вы хотите, чтобы запись взорвалась, если запись недействительна, используйте save или create с ударом (!) ...

@emails.each do |email|
  User.create!(:email => email)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...