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

问题描述 投票:0回答:3

我有一个图像 blob 写入数据库中的一个字段,但我不想在查看用户对象时在控制台中看到该输出。

我不需要为应用程序的功能更改或修改输出,这只是为了使用控制台进行调试/开发。我确实尝试了一些序列化概念,但它们对这些目的没有帮助。我还研究了 filter_parameters,它只对日志记录有帮助,对控制台输出没有帮助。

我正在为 rails 控制台使用 pry-rails gem,如果这有什么改变的话。

ruby-on-rails ruby-on-rails-4 pry-rails
3个回答
0
投票

您需要重写对象的

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


0
投票

你可以使用

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

0
投票

聚会可能有点晚了,但在当前版本的 ActiveRecord 中,最干净的解决方案是覆盖

attribute_for_inspect
,例如

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

  super
end
© www.soinside.com 2019 - 2024. All rights reserved.