プラグインの例をソースとして使用すると、次のことができます。
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ブロック内に貼り付けることができます (本当に、本当に醜いですが、とにかく解決策です)。
編集
上記のコードが機能しない場合は、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