如果新属性与现有属性相同,Active Record 会认为没有发生任何变化,因此不会执行 "保存" 操作。在这种情况下,Active Record 会直接返回 true,表示没有错误。这种设计是为了避免不必要的数据库操作,提高应用程序的性能。
但是,如果您希望强制更新数据库中的记录,即使属性值没有发生变化,您可以使用 touch
方法。touch
方法会更新记录的时间戳,但不会触发任何验证或回调。
例如,假设您有一个名为 User
的模型,其中包含 updated_at
属性,您可以使用以下代码强制更新时间戳:
user = User.find(1)
user.touch
这将更新 updated_at
属性的值,即使其他属性值没有发生变化。
领取专属 10元无门槛券
手把手带您无忧上云