简体   繁体   中英

Using gsub to replace a particular character with a newline (Ruby, Rails console)

Annoying problem. I am trying to replace all semicolon characters in my Model's description field with newline characters (\\n). The database is sqlite. The field is of type text.

If I do it manually at the rails console (manually typing the description for a single record using \\n for line breaks), the rails console automatically escapes the \\n, and the description field becomes filled with \\\\n .

If I do it programmatically using gsub, I get the following situation:

>> s = Sample.find(:first)

=> ...details of record ...

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

=> ...success - it all looks good, new lines in the returned value are represented by \\n...

>> s.save

=> true

>> reload!

Reloading

=> true

>> s = Sample.find(:first)

=> ...details of record ...

>> s.description

=> ... the description field still has semicolons in it rather than newline characters ...

AHHHHHH!!!!!!!

s.description returns a copy of the description so gsub! will only modify the copy and return the modified copy.

Try this:

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

如果您要大量编辑ActiveRecord字段,则可以使用rails插件console_update在编辑器中对其进行编辑

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM