循环时将数据库模型保存在rails控制台中

时间:2014-01-15 03:47:37

标签: 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控制台中执行上述操作。我去查询数据库,并没有修改我期望改变的值。当我运行上面的操作时,它会为数据库中的每条记录显示一组值,但不会显示修改后的值。

我做错了什么? (先谢谢你)

1 个答案:

答案 0 :(得分:0)

在rails中,sub和sub!之间存在巨大差异。 where子作用于字符串,并返回'subed'字符串,但实际上并没有改变原始字符串,sub!更改原始字符串。所以你应该使用第二个版本,分!为了让你的对象改变!

'all'也没有必要,每个都已遍历你的对象