使用rails控制台:
我正在尝试为循环中名为“URL”的列提取数据,并更改URL字符串中的子字符串。然后我想将它保存回DB中,这是简单的代码:
a = Advertiser.where(:name => 'Groupon').first
feeds = Feed.where(:advertiser_id => a.id).all.each { |f| f.url.sub('100', "400"); f.save! }
我不确定为什么在rails控制台中执行上述操作。我去查询数据库,并没有修改我期望改变的值。当我运行上面的操作时,它会为数据库中的每条记录显示一组值,但不会显示修改后的值。
我做错了什么? (先谢谢你)
答案 0 :(得分:0)
在rails中,sub和sub!之间存在巨大差异。 where子作用于字符串,并返回'subed'字符串,但实际上并没有改变原始字符串,sub!更改原始字符串。所以你应该使用第二个版本,分!为了让你的对象改变!
'all'也没有必要,每个都已遍历你的对象