Rake,Active Record - Rails rake任务,更新数据库中的记录

时间:2012-11-15 07:00:55

标签: ruby-on-rails-3 activerecord

我有一个rake任务应该更新数据库中的记录,但无济于事。从rake调用时它是否有效?

这是我所拥有的,它运行没有错误,但它不会更新db

中的记录
task :remove_vintage_from_slugs => :environment do
 wine = Wine.find_by_id(22)
 wine.slug = "new value"
 wine.save
end

更新

wine.save!返回true?
1.9.2-p318:001> wine = Wine.find_by_id(23) 1.9.2-p318:002> wine.slug =“测试” 1.9.2-p318:003> wine.save!  =>真的

1 个答案:

答案 0 :(得分:1)

两件事:

  1. 默认情况下,保存始终运行验证。如果其中任何一个失败,则取消操作并保存返回false。但是,如果您提供:validate =>是的,完全绕过了验证。

  2. 有一系列与save相关的回调。如果任何before_ *回调返回false,则取消操作并且save返回false。

  3. 在控制台中检查保存是否因某种原因返回false。更好的是你应该使用保存! (砰的一声)随着保存!验证总是运行。如果其中任何一个失败,则会引发ActiveRecord :: RecordInvalid。