Данные Rails не сохраняются - PullRequest
0 голосов
/ 05 июля 2011

У меня есть следующие фрагменты кода:

oldroompaxinfo = Roompaxinfo.find(:all, :conditions =>["bkgitem_id = ?",bkgitemid])

.... some code to identify which passenger ids have changed

roompaxinfo = Roompaxinfo.find(:first, :conditions => ["bkgitem_id = ? and roomno = ?  and pax_id = ?", bkgitemid, roomno, oldpaxid])

roompaxinfo.pax_id = newpaxid
roompaxinfo.save

..... some code to send the changes to a remote service.

#If errors occur during send I want to re-instate the old info 
if retcode.index('Error') != nil
   oldroompaxinfo.each do |rp|
       rp.save
   end
end

И проблема в том, что последний бит кода НЕ сохраняет старые данные обратно.В случае, если кто-то думает, что это не выполняется из-за проверки состояния, я уже доказал, что это происходит путем вывода некоторых вещей во флэш-памяти.Я также попробовал rp.save!но это тоже не помогло.

Я использую MySQL с Ruby 1.8 и Rails 2.3.8

1 Ответ

1 голос
/ 05 июля 2011

Когда вы нажимаете на свой цикл, Rails не считает, что rp "грязно", поэтому сохранение не затрагивает базу данных. Rails будет выдавать оператор update только в случае изменения атрибутов.

Возможно, вам потребуется сохранить старые параметры, которые вы хотите (просто pax_id?), Перезагрузить запись rp и затем попытаться сохранить:

oldroompaxinfo.each do |rp|
  pax_id = rp.pax_id
  rp.reload
  rp.update_attributes(:pax_id => pax_id)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...