仅更新尚未更新的记录

时间:2013-05-19 20:28:48

标签: ruby-on-rails ruby ruby-on-rails-3 updatemodel

创建记录时我知道你可以使用方法

.first_or_create!

创建模型中尚不存在的记录。在更新模型时我需要做同样的事情。我有一个运行rake任务的应用程序,可以将分数应用到我的模型中的列。

prediction.update_attributes!(score: score)

我只想更新尚未更新的分数。

这可能吗?

由于

2 个答案:

答案 0 :(得分:1)

我认为您可能正在寻找try方法,该方法将尝试在可能为nil的对象上调用方法。

示例:

>> prediction.try(:update_attributes!, :score => some_new_score)

如果predictionnil,则只返回nil,而不是NoMethodError。如果prediction是表示现有记录的对象,则它将调用该对象上的方法并更新其score属性。

http://api.rubyonrails.org/classes/Object.html#method-i-try

答案 1 :(得分:1)

我同意juanpastas,如果实际发生了某些变化,Rails将只保存到db。如果你想在代码中更明确,为什么不使用'.changed?'标志只保存脏记录?查看here了解更多详情。