1

在 ruby​​ 中得到了一些代码,看起来像(Product 类中的方法):

  def merge_prices_with_suppliers(suppliers)
    data = []
    phs = self.prices
    suppliers_in = phs.map { |ph| ph.supplier_id}.uniq()
    for serv in suppliers_in  
      logger.debug serv
      data_for_supplier = phs.select{|ph| ph.supplier_id== serv}
      debugger
      s = (suppliers.select{|s| s.id.to_s == serv }[0])
      if s.nil? || s.name.nil?
         name = "none" 
      else
         name = s.name
      end
      logger.debug "#{name} #{serv}"
      data.push([name, data_for_supplier.map{|ph| {date: ph.date, amount: ph.amount} }])
    end
   data 
   end 

我正在重新加载并重新运行它:

 reload! and g = Product.by_name( 'thenamehere') and  g.merge_prices_with_suppliers(suppliers)

好的,所以我进行了一些更改,因为 select 语句无法正常工作。然后我reload!。当我重新加载并重做对象的“获取”时,新代码不存在。by_name代码非常简单:(使用Game.where(name: name).firstmongoid)。我自己也试过reload!一条线,没有运气。在重新加载之前,我尝试将对象设置为 nil,但没有成功。我试过制作一个完全不同的物体,没有运气。

但是如果我关闭 irb 并重新启动它,新代码就在那里。

为什么reload!实际上没有重新加载我的代码?我在这里阅读了有关此问题的其他问题,但它们没有帮助。

4

0 回答 0