Динамически определять обратный вызов ассоциации в Rails - PullRequest
1 голос
/ 19 апреля 2020

У нас есть ActiveRecord:

class Node < ApplicationRecord
  has_and_belongs_to_many :tags

  include Auditable
end

module Auditable

  extend ActiveSupport::Concern

  def notify_keywords_change
    # Some logic goes here
  end
end

Как я могу установить #notify_content_change в качестве обратных вызовов after_add и after_remove для ассоциации HABTM: теги? Мне нужно реализовать это внутри Auditable модуля, чтобы сделать его многоразовым.

На самом деле, я работаю над модулем, который должен отслеживать изменения ассоциации модели. Поскольку не было «грязных» функциональных возможностей для ассоциаций коллекций (HABTM и has_many), я нашел решение для отслеживания таких изменений с помощью обратных вызовов - https://anti-pattern.com/dirty-associations-with-activerecord

Теперь мне нужно, чтобы проблема Auditable как-то отвечала на Изменения в коллекции ассоциации. И, наконец, запись пересмотра моделей, в том числе различных ассоциаций.

Мне нужна упрощенная версия проверяемого гема, но с поддержкой ассоциаций (не только атрибутов).

...