首页 > 解决方案 > 观察 Rails ActionText 的变化

问题描述

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

由于 ActionText 创建了与模型的关联,而不是模型上的属性,因此 Dirty 模块不可用。

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

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

还有其他选择吗?

标签: ruby-on-railsobserversactiontext

解决方案


你可以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

推荐阅读