1
有人能告訴我,爲什麼這個工程:爲什麼我的object.save在一個地方工作而在另一個地方失敗?
require 'rubygems'
require 'mysql2'
@inverters=Inverter.where(:mac=>@mac)
Inverter.transaction do
@inverters.each do |inverter|
inverter.ip = @client_ip
inverter.save # Object is saved:)!
end
end
但這並不?:
require 'rubygems'
require 'mysql2'
@outputs=<a two dimensional hash>
Output.transaction do
@outputs.each do |out|
@newOut = Output.new
@newOut.inverter_id = out[:inverter_id]
@newOut.eac = out[:eac]
@newOut.pac = out[:pac]
@newOut.vac = out[:vac]
@newOut.iac = out[:iac]
@newOut.epv = out[:epv]
@newOut.ppv = out[:ppv]
@newOut.vpv = out[:vpv]
@newOut.save # Object fails to save to db:(.
# 2 lines of other code
end
end
兩個對象都保存成功,當我在鐵軌控制檯手動輸入相同的命令,但第二個在我的腳本中失敗。我已經做了大量的調試,確保所有變量('out'和'@outputs')都具有期望的值,並且它們都在控制檯中工作。我使用Ruby 1.8.7,Rails 3.0.3和mysql2 gem version 0.2.7。提前感謝你!
嘗試將您的'save'調用更改爲'save!' - 它們是相同的,除了'save'將返回'true'或'false',這取決於保存是否成功。 'save!'在保存失敗時拋出一個異常,詳細說明失敗的原因,或者在保存工作時正常保存。這對調試這樣的問題非常有用! –
偉大的我會嘗試!我也忘了提及'@ newOut.save'正在返回true,即使我可以看到它在檢查db時沒有保存。你知道這會發生嗎? – pitachip