回答:
を使用<<して、文字列にインプレースで追加できます。
s = "foo"
old_id = s.object_id
s << "bar"
s #=> "foobar"
s.object_id == old_id #=> true
<<すでにオブジェクトの状態を変更しています。そうconcatです。
widget.notes.where(:author_id => a).firstおそらく毎回新しいオブジェクトを返すため、変更されていない文字列が返されます。これには、独自の独立した文字列があります。
次のものも使用できます。
s.concat("world")
<<文字列を返すので、同様にチェーン可能でなければなりません。
なぜこれが重要なのでしょうか。
これはあなたの質問への直接の答えではないことを知っていますが、文字列のオブジェクトIDを保持しようとしているという事実は、あなたがしようとしていることをもう一度見直す必要があることを示すかもしれません。
たとえば、文字列のオブジェクトIDに依存すると、追跡が非常に困難なバグが発生することがあります。