在控制器操作中适当使用 ActiveModel Dirty

问题描述 投票:0回答:1

导轨控制器动作具有通常的样板结构

  def update
    respond_to do |format|
      if @individual.update(individual_params)
        format.html { redirect_to @individual, notice: "Individual was successfully updated." }
       # if @individual.changed?  
        render_pdf
      # end
      else
        format.html { render :edit, status: :unprocessable_entity }
      end
    end
  end

然而,目标是 - 在记录已更新的地方(除了

updated_at
属性) - 激活将生成 PDF 的方法。

查阅 dirty 的文档,我无法生成对

changed?
方法的真实响应。我怀疑这是因为调用方法的时间安排(
if @individual.update
意味着记录已保存,因此脏位已被清除)。

上面应该怎么写才能达到目的?

替代方案
回调

after_update_commit
可能是一个选项,但是,rails 指南并不明确是否在没有更新属性时启动操作。

ruby-on-rails callback
1个回答
0
投票
if @individual.previous_changes.present?
© www.soinside.com 2019 - 2024. All rights reserved.