Ruby on rails 循环时在rails控制台中保存DB模型

Ruby on rails 循环时在rails控制台中保存DB模型,ruby-on-rails,console,Ruby On Rails,Console,使用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控制台中执行上述操作的原因。我去查询

使用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控制台中执行上述操作的原因。我去查询数据库,我希望更改的值都没有被修改。当我运行上面的程序时,它会为数据库中的每条记录显示一组值,但不会显示修改后的值


我做错了什么?(提前感谢)

在rails中,sub和sub之间存在巨大的差异!。其中sub处理字符串,并返回“subed”字符串,但实际上不会更改原始字符串sub!在位更改原始字符串。所以你应该使用第二个版本,sub!为了改变你的目标


“全部”也不是必需的,每个都已经在您的对象中循环了

谢谢,这很有意义,今晚稍后将尝试。