after_update if оператор, основанный на значениях атрибута Ruby on Rails - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь отправить уведомление в зависимости от состояния проекта, но не могу правильно понять логику - мой код запускается :create_slack_notify_job после любого обновления, однако я хочу, чтобы :create_slack_notify_job запускался только после определенного видаобновление (когда статус проекта был изменен на «Активный»), а не после какого-либо обновления атрибута.Мой after_update ниже - есть идеи, как заставить это работать, как объяснено?

after_update :create_slack_notify_job, if: Proc.new{|project|project.status_changed? && project.status == 'Active' }

1 Ответ

0 голосов
/ 06 июня 2018

Если вы используете Rails 5.1+, вам нужно использовать метод saved_changes и друзей.В частности, вы, вероятно, хотите project.saved_change_to_attribute? :status, to: 'Active'

http://api.rubyonrails.org/classes/ActiveRecord/AttributeMethods/Dirty.html#method-i-saved_change_to_attribute-3F

https://github.com/rails/rails/pull/19847

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...