恼人的问题。我试图用换行符(\ 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 !!!!!!!
答案 0 :(得分:28)
s.description
会返回说明的副本,因此gsub!
只会修改副本并返回修改后的副本。
试试这个:
s.description = s.description.gsub(/;/,"\n")
答案 1 :(得分:0)
如果您正在编辑很多ActiveRecord字段,可以使用rails插件console_update
在编辑器中编辑它们。