私はpryとRailsコンソールでActiveRecordオブジェクトを検査していますが、属性の1つが本当に冗長です。Rails 4の冗長なActiveRecordオブジェクトの検査
my_record.document.to_s.length # => 45480
どのように私は省略記号でそれを切り捨てる前に、私はmy_record.document
から数十文字が欲しいのRailsを伝える、レコードを表示することができますか?
私はpryとRailsコンソールでActiveRecordオブジェクトを検査していますが、属性の1つが本当に冗長です。Rails 4の冗長なActiveRecordオブジェクトの検査
my_record.document.to_s.length # => 45480
どのように私は省略記号でそれを切り捨てる前に、私はmy_record.document
から数十文字が欲しいのRailsを伝える、レコードを表示することができますか?
アクションビューのtruncate
メソッドを使用して、これを行うことができます。たとえば、省略記号を含めて300文字に切り捨てたい場合は、次のようにします。
truncate(my_record.document.to_s, length: 300)
あなたは最初にあなたのコンソールで利用可能なtruncate
を持つためにActionView ::ヘルパー・メソッドを含める必要があります。
max_length = 10
"This could be a really long string".first(max_length - 3).ljust(max_length, "...")
出力:
"This co..."
EDIT
したい場合は、そのルートを移動したい場合は
include ActionView::Helpers
また、これは純粋なRubyで行うのは簡単です単一の属性の検査を切り捨てる場合は、attribute_for_inspect
:あなたのモデルで
:
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_inspect
がActiveRecord::AttributeMethods
場合に定義されている。例えば
、あなたは次のように(省略記号を含む)300文字にdocument
列の表示を切り捨てることができあなたはそれがどのように動作するかを見たい:https://github.com/rails/rails/blob/52ce6ece8c8f74064bb64e0a0b1ddd83092718e1/activerecord/lib/active_record/attribute_methods.rb#L296。