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)
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)