【问题标题】:Rails: Indicating that a model has an observerRails:指示模型有观察者
【发布时间】:2012-03-13 04:39:02
【问题描述】:

我实现的模型需要将其中一个字段转义/格式化为输入文本的 html 友好版本(为了论证,假设它是蓝色/红色布风格的东西)。

我使用 before_save 回调在观察者中实现了这一点,一切正常,没有抱怨。我在编写代码时正在学习 Rails,让我感到震惊的是,仅查看模型并没有迹象表明它有观察者。

是否有一种简洁的方式来指示(对于可能查看/编辑我的代码的其他程序员)模型有观察者,或者我应该只在评论中这样做(或根本不这样做)。

【问题讨论】:

    标签: ruby-on-rails observer-pattern


    【解决方案1】:

    据我所知,您不需要在目标类/模型上指定它有一个观察者,您只需确保观察者列出它正在观察的模型。

    class ContentObserver < ActiveRecord::Observer
      observe :answer, :audio_clip, :document
      #This right here ^
    
      def after_update(record)
        record.recent_activity.save!
      end
    end
    

    【讨论】:

    • 感谢您的回复,不过情况恰恰相反。我收集到,在这里使用您的代码,您可以让单个观察者在多个模型/不可推断模型上触发其回调。从模型的角度来看,我在想,没有办法(从你的例子)意识到答案模型会纯粹通过查看答案模型代码来触发这个回调,我想知道是否有办法。认为我只是要在代码中添加注释。
    【解决方案2】:

    为观察者准备一个规范/测试文件。如果将来有人以让观察者不安的方式更改模型,那么规范/测试将失败,这会提醒他们。

    【讨论】:

      猜你喜欢
      • 2010-09-28
      • 2010-12-25
      • 2016-02-20
      • 2023-04-10
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多