次のようなルビーのコードを取得しました(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).first
mongoid を使用)。私もreload!
それ自体で回線を試しましたが、うまくいきませんでした。リロードする前にオブジェクトを nil に設定しようとしましたが、うまくいきませんでした。まったく別のオブジェクトを作成しようとしましたが、うまくいきませんでした。
しかし、irb を閉じて再起動すると、新しいコードがすぐそこにあります。
reload!
実際にコードをリロードしないのはなぜですか? この問題についてここで他の質問を読みましたが、役に立ちませんでした。