Несколько has_paper_trail в модели, один для :создания другого для :обновления

#paper-trail-gem

Вопрос:

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

Итак, я пытаюсь это сделать.

 class MyModel lt; ActiveRecord::Base  has_paper_trail if: Proc.new { |mymodel| mymodel.whodunnit.present? },   on: [:create]  has_paper_trail if: Proc.new { |mymodel| mymodel.status.present? },   on: [:update, :touch]   before_create {   PaperTrail.request.whodunnit = whodunnit if whodunnit.present?   }   attr_accessor :whodunnit end   

Но это не работает, как правильно это сделать?

Спасибо.

Комментарии:

1. Re: «это не работает» не могли бы вы уточнить, пожалуйста? Вы получаете сообщение об ошибке? Если это так, пожалуйста, включите соответствующие части трассировки стека. Я предполагаю, что вы получаете NoMethodError mymodel.whodunnit оценку, но трудно помочь, основываясь на догадках.