我正在使用优点 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
我在 User 模型中创建了一个方法“model_method”,它做同样的事情helper_method
,所以我可以毫无问题地做到这一点:
grant_on 'users#update_badges', :badge => "Badge Name" do |user|
user.model_method == foo
end
我想知道是否有某种方法可以在后台使用 delay_job 运行此过程,因为helper_method
它非常繁重。我已经尝试过以下在后台运行 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
优点 gem 中检查grant_on block&
条件是否满足的代码没有延迟,所以我不太确定如何解决这个问题。提前致谢。