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
我有一个带 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