观察 Rails ActionText 的变化

问题描述

观察 Rails ActionText 变化的最简单方法是什么?我的用例是在编辑富文本字段时发送通知

因为 ActionText 创建与模型的关联并且不是模型上的属性,所以 Dirty 模块不可用。

我可以使用自定义的脏关联模块,例如:https://anti-pattern.com/dirty-associations-with-activerecord

我也可以在模型上有一个属性,它在每次更新时保存 ActionText::Content 纯文本,然后被观察。

还有其他选择吗?

解决方法

您可以像下面这样使用 hash

class ArticlesController < ApplicationController
  
  ...

  def update
    @article = Article.find(params[:id])
    orig_content_hash = @article.content.to_s.hash

    if @article.update(article_params)
      # hash will have changed if content was updated
      send_notification unless @article.content.to_s.hash == orig_content_hash
      redirect_to article_path(@article.id)
    else
      render :edit
    end
  end

  ...

end

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...