在Rails 4中检查详细的ActiveRecord对象

时间:2016-04-27 06:33:34

标签: ruby-on-rails ruby-on-rails-4 activerecord inspect

我正在检查pry和Rails控制台中的ActiveRecord对象,但其中一个属性真的很冗长。

my_record.document.to_s.length # => 45480

如何查看记录,告诉Rails我只需要my_record.document中的几十个字符,然后用省略号截断它?

1 个答案:

答案 0 :(得分:2)

您可以使用操作视图中的truncate方法执行此操作。例如,如果要截断为300个字符(包括省略号),则可以执行以下操作。

truncate(my_record.document.to_s, length: 300)

您首先必须包含ActionView :: Helper方法,才能在控制台中使用truncate

include ActionView::Helpers

如果您想要走这条路线,这在纯Ruby中也很简单:

max_length = 10
"This could be a really long string".first(max_length - 3).ljust(max_length, "...")

输出:

"This co..."

修改

如果要截断单个属性的检查,请覆盖attribute_for_inspect

例如,您可以将document列的显示截断为300个字符(包括省略号),如下所示:

在您的模型中:

def attribute_for_inspect(attr_name)
  if attr_name.to_sym == :document
    max_length = 300
    value = read_attribute(attr_name).to_s

    # You should guard against nil here.
    value.first(max_length - 3).ljust(max_length, "...")
  else
    super
  end
end

attr_for_inspectActiveRecord::AttributeMethods中定义,如果您想了解其工作原理:https://github.com/rails/rails/blob/52ce6ece8c8f74064bb64e0a0b1ddd83092718e1/activerecord/lib/active_record/attribute_methods.rb#L296