美好的一天。當方法存在時循環中的方法NoMethodError
即使在我的開發環境中工作得很好,我也遇到了一些問題,讓腳本在我的生產環境中運行。我已經證實所有必需的寶石和這些都是相同的版本。
我應該提到腳本是用腳本/ runner命令運行的。
這裏是什麼,我試圖做一個超級濃縮版,周圍的部位爲中心的那個地方不對頭:
def currentDeal
marketTime = self.convertToTimeZone(Time.new)
deal = Deal.find(:first, :conditions => ["start_time ? AND market_id = ? AND published = ?", marketTime, marketTime, self.id, 1])
return deal
end
markets = Market.find(all)
markets.each do |market|
deal = market.currentDeal
puts deal.subject
end
現在convertToTimeZone是附着在模型的方法。如上所述,這個代碼在我的開發機器上工作得很好。然而,試圖在我的生產機器運行結果它在:
undefined method `subject' for nil:NilClass (NoMethodError)
但是,如果我進入控制檯上的生產箱和做到這一點:
def currentDeal
marketTime = self.convertToTimeZone(Time.new)
deal = Deal.find(:first, :conditions => ["start_time ? AND market_id = ? AND published = ?", marketTime, marketTime, self.id, 1])
return deal
end
market = Market.find(1)
deal = market.currentDeal
puts deal.subject
它返回正確的值,沒問題。那麼發生了什麼?
這是在軌道v 2.3.5,在兩臺機器上。
感謝所有幫助
我認爲你已經在Deal.find調用中重複了marketTime參數。 – Fred 2010-04-16 16:17:33