创建记录时我知道你可以使用方法
.first_or_create!
创建模型中尚不存在的记录。在更新模型时我需要做同样的事情。我有一个运行rake任务的应用程序,可以将分数应用到我的模型中的列。
prediction.update_attributes!(score: score)
我只想更新尚未更新的分数。
这可能吗?
由于
答案 0 :(得分:1)
我认为您可能正在寻找try
方法,该方法将尝试在可能为nil
的对象上调用方法。
示例:
>> prediction.try(:update_attributes!, :score => some_new_score)
如果prediction
为nil
,则只返回nil
,而不是NoMethodError
。如果prediction
是表示现有记录的对象,则它将调用该对象上的方法并更新其score
属性。
答案 1 :(得分:1)
我同意juanpastas,如果实际发生了某些变化,Rails将只保存到db。如果你想在代码中更明确,为什么不使用'.changed?'标志只保存脏记录?查看here了解更多详情。