12
Rails Observer 4.0の代替
Observersが正式にRails 4.0から削除されたので、他の開発者が自分の代わりに何を使っているのか知りたいです。(抽出されたgemを使用する場合を除きます。)オブザーバーは確かに乱用され、時として扱いにくくなる可能性がありますが、キャッシュをクリアする以外にも多くのユースケースがあり、有益でした。 たとえば、モデルへの変更を追跡する必要があるアプリケーションを考えてみましょう。オブザーバーはモデルAでの変更を簡単に監視し、モデルBでそれらの変更をデータベースに記録できます。複数のモデルにわたる変更を監視したい場合は、1人のオブザーバーがそれを処理できます。 Rails 4では、他の開発者がその機能を再現するためにObserversの代わりに使用している戦略に興味があります。 個人的には、これらの変更が各モデルコントローラーのcreate / update / deleteメソッドで追跡される、一種の「ファットコントローラー」の実装に傾いています。各コントローラーの動作が少し膨れますが、すべてのコードが1か所にあるため、読みやすさと理解に役立ちます。欠点は、非常によく似たコードがいくつかのコントローラーに散在していることです。そのコードをヘルパーメソッドに抽出することはオプションですが、これらのメソッドへの呼び出しはどこにでも散らかっています。世界の終わりではありませんが、「細いコントローラー」の精神でもありません。 ActiveRecordコールバックも考えられる別のオプションですが、私の意見では2つの異なるモデルを非常に密接に結合する傾向があるため、個人的には好きではありません。 したがって、Rails 4のオブザーバーのない世界では、別のレコードが作成/更新/破棄された後に新しいレコードを作成する必要がある場合、どの設計パターンを使用しますか?ファットコントローラー、ActiveRecordコールバック、または何か他のもの? ありがとうございました。