ruby-on-rails 如何在pry / rails输出中隐藏列

v7pvogib  于 2023-05-08  发布在  Ruby
关注(0)|答案(3)|浏览(120)

我将一个图像blob写入数据库中的一个字段,但我不希望在查看用户对象时在控制台中看到该输出。
我不需要改变或修改应用程序的功能输出,这只是为了调试/开发控制台。我确实尝试了一些序列化概念,但它们对这些目的没有帮助。我还研究了filter_parameters,它只对日志记录有帮助,而不是窥探控制台输出。
我正在使用pry-rails gem作为rails控制台,如果这会改变什么的话。

x759pob2

x759pob21#

也许有点晚了,但在当前版本的ActiveRecord中,最干净的解决方案是覆盖attribute_for_inspect,例如。

def attribute_for_inspect(attr_name)
  return 'SKIPPED' if attr_name == :blob

  super
end
mccptt67

mccptt672#

您需要覆盖对象的inspect方法。看看inspect的默认实现-它使用了对象的所有属性。您必须将其更改为仅包含您希望显示的列/属性。

nfs0ujit

nfs0ujit3#

你可以使用select来实现

User.select(User.attribute_names - ['avatar', 'permalink']).last

如果您经常使用这个方法,我建议您为User类声明一个作用域

class User < ActiveRecord::Base
  scope :pry_scope, ->{ select(User.attribute_names - ['avatar', 'permalink']) }
  ...
end

然后在控制台上使用它:

> User.pry_scope.last

相关问题