【问题标题】:How to save all fields of a Rails record even if they are not changed即使没有更改,如何保存 Rails 记录的所有字段
【发布时间】:2020-04-27 12:59:45
【问题描述】:

当记录被保存/加载到/从数据库中时,我使用 Rails 属性 API 来加密和解密某些字段。现在我需要更改加密完成的方式,并且需要重新保存所有记录,以便更新数据库中的加密值。

但是在 Rails 4 中删除 partial_updates 配置后,这似乎真的很难。有什么方法可以让 Rails 保存字段,即使它们没有更改?

或者我是否需要编写一个直接更新 SQL 的方法?

【问题讨论】:

  • 表中有多少条记录?
  • 大约有 40 万条记录。
  • 您可以创建一个 rake 任务并从表中加载大量记录,进行更新,然后保存直到更新每条记录。

标签: ruby-on-rails


【解决方案1】:

您需要将它们标记为脏。例如 Post 模型有一个title 属性:

post = Post.find(12)
post.title_will_change!
post.save

here for more information on dirty attributes

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-14
    • 2017-05-25
    • 1970-01-01
    • 2019-08-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    相关资源
    最近更新 更多