【问题标题】:ActiveRecord partial updates in PadrinoPadrino 中的 ActiveRecord 部分更新
【发布时间】:2011-03-01 19:47:29
【问题描述】:

如何配置 ActiveRecord 以在 Padrino 应用程序中使用 partial_updates?

Customer < ActiveRecord::Base
  after_update :check_name_change

  private
  def check_name_change
    if name_changed?
      # send mail notification for change of name.
    end
  end
end

考虑用户在数据库中具有“名称”和“国家/地区”等属性。
当用户更新名称时,它会按预期发送电子邮件通知。但是,即使用户更改了国家(或任何其他)属性,它也会发送名称更改通知,这是不可接受的。

通过查看日志,我发现对国家的更新查询正在全面更新,设置了用户记录的所有属性。因此name_changed?方法返回 true 并发送更改名称的通知电子邮件。

如果我在 app.rb 中加入以下行

ActiveRecord::Base.partial_updates = true

我看不出有什么不同。任何 update_attribute 调用仍会完整更新记录。
是否有其他解决方案或解决方法?

【问题讨论】:

    标签: activerecord padrino


    【解决方案1】:

    这与 padrino 无关,仅与活动记录有关。

    在 before_save 上试一试。

    【讨论】:

    • 所以你的意思是活动记录有这个问题?我正在使用活动记录 3.0.0,知道这是否已在更高版本中修复?您对使用 before_save 的建议确实是一种解决方法,因为我已经实现了它,但它只适用于上述情况。一般来说,我们不能总是使用 before_save 来代替 after_create。我的问题是特定于部分更新的,我需要让它工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2011-06-09
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 2012-06-07
    • 1970-01-01
    相关资源
    最近更新 更多