rails 中是否必须使用保存方法?

Is save method mandatory in rails?

Model.find(ids).each { |model| model.is_active = false } unless ids.empty?

这里,model.save方法是否必要?因为没有它,它也能正常工作。

列定义如下

t.integer :is_active, limit: 1

对您的问题的简短回答是:是的。

运行 model.is_active = false 本身不会在数据库中保存更改。在运行ning model.is_active = false之后尝试重新获取数据库记录,你会发现这个值实际上并没有改变;您还需要 运行 model.save 才能做到这一点。

但是,对于这种情况(假设您想立即将更改保存到记录!),有一种更简洁的方法来保存数据,而不是 运行 两个命令:

model.update_attribute(:is_active, false)

如果验证通过,这将更新数据库中的值,并且 运行 任何回调(例如 after_save)。

如果您想 更新值而无需 运行 验证和回调(这通常更快,但更多 "dangerous"),那么您可以改为使用:

model.update_column(:is_active, false)