【发布时间】:2015-05-07 18:38:04
【问题描述】:
目前我已经设法让leaderboard gem 在我的 Rails 应用程序上工作,但我似乎无法弄清楚如何将用户数据放到它上面。我也不知道如何让它随着用户分数的更新而更新......
我一直关注 this tutorial 试图让它工作,但现在正在努力整合最后一点......
目前我有这样的 Boards update_service.rb:
module Boards
class UpdateService < Boards::Base
def execute(user)
name = user.first_name
score = user.percentages
leaderboard.rank_member(name, score)
member = leaderboard.score_and_rank_for(name)
member[:page] = leaderboard.page_for(name, leaderboard.page_size)
member
end
end
end
我想现在对所有用户调用此服务(以便他们都根据当前分数进行排名),然后对其进行设置,以便在每次更新用户分数时调用此服务。
我不知道在哪里调用它来获取初始数据...
但是通过在 Rails 控制台中玩耍,我发现这很有效:
update = Boards::UpdateService.new
Student.all.each do |student|
update.execute(student)
end
为了让它随着用户的分数更新而更新,我认为我应该这样做:
after_update :update_rank
def update_rank
Boards::UpdateService.new
end
在 User 类中,老实说,我从教程中得到了部分内容,我真的不明白为什么不是这样:
def update_rank
Boards::UpdateService(user)
end
但这可能只是因为我真的不太了解发生了什么......
【问题讨论】:
标签: ruby-on-rails ruby leaderboard