Rails 5.2 关联回调未在 before_add 或 before_remove 上触发

Rails 5.2 Association callbacks not firing on before_add or before_remove

我有一个带 HABTM 的 Activity 模型:

has_and_belongs_to_many :contacts,
                        -> { distinct },
                        before_add: :contact_calculate_score,
                        before_remove: :contact_calculate_score


def contact_calculate_score(contact)
  binding.pry
  contact.calculate_score
end

这方面有很多问题,例如this one

我已经尝试使用“<<”将活动插入到联系人中,但回调仍然没有触发。为什么没有被调用?

据我所知,这也不是中描述的问题。

所以代码是正确的,问题是我的期望与我在控制台中所做的不符,这是这样的:

"a contact_instance".activities << "an activity instance"

例如:

   Contact.first.activities << Activity.create(...)

我必须在 Contact 模型中定义回调才能工作。

或者,为了触发我的回调,我必须将一个 Contact 实例推送到 Activity:

的联系人中
"an activity instance".contacts << "a contact_instance"

例如:

Activity.first.contacts << Contact.create(...) or Contact.find(...) etc