使用gsub用换行符替换特定字符(Ruby,Rails控制台)

时间:2009-10-10 11:06:21

标签: ruby-on-rails ruby string newline gsub

恼人的问题。我试图用换行符(\ n)替换模型的描述字段中的所有分号字符。数据库是sqlite。该字段是文本类型。

如果我在rails控制台上手动执行此操作(使用\ n为换行符手动键入单个记录的说明),rails控制台会自动转义\ n,并且说明字段将填充\\n

如果我使用gsub以编程方式进行,我会遇到以下情况:

>> s = Sample.find(:first)

=> ......记录的细节......

>> s.description.gsub!(/;/,"\n")

=> ...成功 - 一切看起来都不错,返回值中的新行由\ n ...

表示
>> s.save

=> true

>> reload!

Reloading

=> true

>> s = Sample.find(:first)

=> ......记录的细节......

>> s.description

=> ...描述字段中仍然有分号而不是换行符......

AHHHHHH !!!!!!!

2 个答案:

答案 0 :(得分:28)

s.description会返回说明的副本,因此gsub!只会修改副本并返回修改后的副本。

试试这个:

s.description = s.description.gsub(/;/,"\n")

答案 1 :(得分:0)

如果您正在编辑很多ActiveRecord字段,可以使用rails插件console_update

在编辑器中编辑它们。