问题描述
观察 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