美好的一天。当方法存在时循环中的方法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