Ruby on rails сохраняет данные внутри цикла - PullRequest
0 голосов
/ 29 ноября 2010
   object.each do |info|
     @user_work_history.fb_user_id = facebook_session.user.id
     @user_work_history.city = info.location.city
     @user_work_history.country = info.location.state
     @user_work_history.company_name = info.company_name
     @user_work_history.description = info.description
     @user_work_history.start_date = info.start_date
     @user_work_history.end_date = info.end_date
     @user_work_history.position = info.position
     @user_work_history.updated_at = Time.now
     @user_work_history.save
   end

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

Ответы [ 2 ]

2 голосов
/ 29 ноября 2010

Когда вы делаете такой цикл, вам нужно изменить ссылку на переменную экземпляра @ user_work_history . Ваш цикл выполняет то, что для каждой итерации он обновляет состояние одного и того же объекта!

Что вам нужно сделать, это установить @ user_work_history перед каждой итерацией, например:

object.each do |info|
     @user_work_history = UserWorkHistory.new(:fb_user_id => facebook_session.user.id) # for example
     @user_work_history.city = info.location.city
     @user_work_history.country = info.location.state
     (...)
     @user_work_history.save # here it saves new tuple
end
2 голосов
/ 29 ноября 2010

Я считаю, что вы должны добавить

@user_work_history = UserWorkHistory.new

до первой строки внутри цикла. (или какая бы модель не была)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...