创建记录时,我知道您可以使用该方法
.first_or_create!
创建模型中尚不存在的记录。更新模型时我需要做同样的事情。我有一个运行 rake 任务的应用程序,可以将分数应用于模型中的列。
prediction.update_attributes!(score: score)
我只想更新尚未更新的分数。
这可能吗?
谢谢
创建记录时,我知道您可以使用该方法
.first_or_create!
创建模型中尚不存在的记录。更新模型时我需要做同样的事情。我有一个运行 rake 任务的应用程序,可以将分数应用于模型中的列。
prediction.update_attributes!(score: score)
我只想更新尚未更新的分数。
这可能吗?
谢谢
我同意 juanpastas 的观点,即 Rails 只有在实际发生变化时才会保存到数据库中。如果您想在代码中更加明确,为什么不使用“.changed”?标志只保存脏记录?在这里查看更多详细信息。
我认为您可能正在寻找一种方法,该try
方法将尝试调用潜在的对象上的方法nil
。
例子:
>> prediction.try(:update_attributes!, :score => some_new_score)
如果prediction
是nil
它只会返回nil
,而不是抛出一个NoMethodError
. 如果prediction
是表示现有记录的对象,那么它将调用对象上的方法并更新其score
属性。