【发布时间】:2014-11-08 14:39:27
【问题描述】:
我正在使用功绩宝石为用户分配徽章。
在我的 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”,它与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
merit gem 中检查grant_on block& 条件是否满足的代码没有延迟,所以我不确定如何解决这个问题。提前致谢。
【问题讨论】:
标签: ruby-on-rails delayed-job observers merit-gem