Взяв пример плагина в качестве источника, вы можете сделать следующее:
class Post
include Mongoid::Document
include Mongo::Voteable
extend ActiveModel::Callbacks
define_model_callbacks :vote
# set points for each vote
voteable self, :up => +1, :down => -1
def vote(options, value = nil)
_run_vote_callbacks do
super( options, value )
end
end
end
Я не запускал этот код, поэтому я не уверен, будет ли он работать правильно или нет, но в худшем случае вы можете использовать псевдоним метода голосования, используя alias_method_chain или просто скопировать и вставить исходный код внутрь блока _run_vote_callbacks (действительно, действительно ужасно, но в любом случае это решение).
EDIT
Это также можно сделать с помощью alias_method_chain, если приведенный выше код не работает:
class Post
include Mongoid::Document
include Mongo::Voteable
extend ActiveModel::Callbacks
define_model_callbacks :vote
# set points for each vote
voteable self, :up => +1, :down => -1
alias_method_chain :vote, :callback
def vote_with_callback(options, value = nil)
_run_vote_callbacks do
vote_without_callbacks( options, value )
end
end
end