如何防止方法内输出 ActiveRecord::Base.logger?

How do I prevent output ActiveRecord::Base.logger from within a method?

每次在控制台中调用下面的方法时,它都需要几分钟才能打印出数据库条目。剩下的时间我需要看打印,所以完全关闭它不是一个选项。

这是我在方法中直接停止打印的尝试,没有成功。

def generate_dataset
  old_logger = ActiveRecord::Base.logger
  ActiveRecord::Base.logger = nil

  ProductDatum.create(product_names: Products.all.pluck(:name))

  ActiveRecord::Base.logger = old_logger
end

您正在寻找 #silence,它占用了一个块,在此期间记录器被静音:

def generate_dataset
  ActiveRecord::Base.logger.silence do
    ProductDatum.create(product_names: Products.all.pluck(:name))
  end
end