1

次のようなルビーのコードを取得しました(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