Заглушить метод, добавленный плагином в классе ActiveRecord - PullRequest
2 голосов
/ 10 мая 2011

Я использую плагин acts_as_audited для модели User.Итак, у меня есть следующее в user.rb -

class User < ActiveRecord::Base
  acts_as_audited
end

Я знаю, что плагин activ_as_audited работает, так как у него есть свои собственные модульные тесты.«В моих собственных спецификациях, так как каждый раз, когда я создаю пользователя или изменяю его, acts_as_audited делает свое дело и проверяет каждое изменение.

Мои тесты выполнялись бы намного быстрее, если бы я мог заглушить вызов act_as_audited, чтобы он не попал в базу данных.

Спасибо!

1 Ответ

2 голосов
/ 10 мая 2011

Я не думаю, что есть что-то встроенное в acts_as_audited, чтобы заглушить плагин, но для этого был запрос функции:

https://github.com/collectiveidea/acts_as_audited/issues/18

Одним из решений является запись ловушки, чтобы избежать записи в БД, если статическая переменная класса имеет значение false:

module CollectiveIdea::Acts::Audited::InstanceMethods
  private
    def write_audit(attrs)
      self.audits.create attrs if auditing_enabled && Audit.auditing_enabled?
    end
end

class Audit
  @@auditing_enabled = true
  def self.auditing_enabled?
    @@auditing_enabled
  end

  def self.disable_auditing
    @@auditing_enabled = false
  end

  def self.enable_auditing
    @@auditing_enabled = true
  end
end
...