Как скрыть столбец в выводе pry / rails

У меня есть блоб изображения, записанный в поле в БД, но я не хочу видеть этот вывод в консоли при просмотре объекта пользователя.

Мне не нужно, чтобы выходные данные изменялись или модифицировались для функционирования приложения, это просто для отладки / разработки с помощью консоли. Я попробовал некоторые концепции сериализации, но они не помогают в этих целях. Я также посмотрел на filter_parameters, которые полезны только для регистрации, а не для вывода консоли.

Я использую драгоценный камень для консоли, если это что-то изменит.

3 ответа

Решение

Вам нужно будет переопределить inspect метод для объекта. Посмотрите на реализацию по умолчанию inspect - он использует все атрибуты объекта. Вам придется изменить это, чтобы включить только те столбцы / атрибуты, которые вы хотите показать.

Возможно, немного опоздал, но в текущих версиях ActiveRecord самым чистым решением было бы перезаписатьattribute_for_inspect, например

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

  super
end

Ты можешь использовать 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
Другие вопросы по тегам