【问题标题】:Get old value in before_save or before_update using "_was'使用“_was”在 before_save 或 before_update 中获取旧值
【发布时间】:2021-07-09 04:12:12
【问题描述】:

我正在使用 Rails 2.3 并尝试在第一次填写所有必填字段时更改表​​单的提交日期

这是我在before_savebefore_update 中尝试过的:

if ((self.required_fields_filled == true) and (self.required_fields_filled_was == false)) 
      self.submitted_at = Time.now
end

只要required_fields_filled 当前为真,它总是将submitted_at 更新为Time.now

知道我做错了什么吗?

【问题讨论】:

  • 我认为您不应该使用required_fields_filled 来满足您的要求only the first time,因为有一种情况是required_fields_filled == truerequired_fields_filled_was == false 在{n} 次(例如用户第一次填写所有,下次他删除一个字段时,他会再次使用完整字段进行更新submitted_at 是nil(第一次)并填充所有字段(在逻辑上,不需要数据库字段),很容易实现您的要求。
  • 问题是 - 我希望用户能够填写表单并保存他们的进度而不填写所有必填字段,然后在所有必填字段后提交表单已填写。因此,我需要这两种资格。

标签: ruby-on-rails activerecord ruby-on-rails-2


【解决方案1】:

这对我有用:

if (self.required_fields_filled == true)
      self.submitted_at ||= Time.now
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多