Rails 5.2 Обратные вызовы ассоциации не запускаются по before_add или before_remove - PullRequest
0 голосов
/ 09 июля 2019

У меня есть модель Activity с HABTM:

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 .

Я пытался использовать«<<» для вставки действий в контакты, но обратный вызов все равно не срабатывает.Почему это не вызывается? </p>

Насколько я понимаю, это не проблема, описанная в этот вопрос .

1 Ответ

0 голосов
/ 09 июля 2019

Так что код правильный, проблема была в том, что мои ожидания не соответствовали тому, что я делал в консоли, а именно:

"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
...