Merit gem を使用してバッジをユーザーに割り当てています。
私の Badge_rules.rb ファイルには次のものがあります。
module Merit
class BadgeRules
include Merit::BadgeRulesMethods
include UserHelper
def initiate
grant_on 'users#update_badges', :badge => "Badge Name" do |user|
helper_method(user) == foo
end
end
end
end
と同じことを行うメソッド 'model_method' を User モデルに作成したhelper_method
ので、これを問題なく実行できます。
grant_on 'users#update_badges', :badge => "Badge Name" do |user|
user.model_method == foo
end
helper_method
このプロセスはかなり重いため、delayed_job を使用してバックグラウンドで実行する方法があるかどうかを知りたいです。バックグラウンドで model_method を実行する次のことを既に試しましたが、バッジを授与しません:
grant_on 'users#update_badges', :badge => "Badge Name" do |user|
user.delay.model_method == foo
end
と:
handle_asynchronously :initialize
def initialize
grant_on 'users#update_badges', :badge => "Badge Name" do |user|
helper_method(user) == foo
end
end
条件が満たされているかどうかをチェックするメリットジェムのコードはgrant_on block&
遅延していないため、この問題にどのようにアプローチするかはよくわかりません。前もって感謝します。