def disable_ferret(option = :once)
      if block_given?
        @ferret_disabled = :always
        result = yield
        ferret_enable
        ferret_update if option == :index_when_finished || (option == :index_when_true && result)
        result
      elsif [:once, :always].include?(option)
        @ferret_disabled = option
      else
        raise ArgumentError.new("Invalid Argument #{option}")
      end
    end
def disable_ferret(option = :once)
      if block_given?
        @ferret_disabled = :always
        result = yield
        ferret_enable
        ferret_update if option == :index_when_finished || (option == :index_when_true && result)
        result
      elsif [:once, :always].include?(option)
        @ferret_disabled = option
      else
        raise ArgumentError.new("Invalid Argument #{option}")
      end
    end
Disable Ferret for this record for a specified amount of time. ::once will
 disable Ferret for the next call to #save (this is the default), ::always
 will do so for all subsequent calls.

 Note that this will turn off only the create and update hooks, but not the
 destroy hook. I think that's reasonable, if you think the opposite, please
 tell me.

 To manually trigger reindexing of a record after you're finished modifying
 it, you can call #ferret_update directly instead of #save (remember to
 enable ferret again before).

 When given a block, this will be executed without any ferret indexing of
 this object taking place. The optional argument in this case can be used
 to indicate if the object should be indexed after executing the block
 (::index_when_finished). Automatic Ferret indexing of this object will be
 turned on after the block has been executed. If passed ::index_when_true,
 the index will only be updated if the block evaluated not to false or nil.