【发布时间】:2014-03-08 16:08:49
【问题描述】:
我从我的数据库中提取了一个可排序的玩家列表。用户可以按照自己的喜好对它们进行排名。
在与每个玩家的偏好相关联的数据库中存储该顺序并以相同顺序检索玩家统计数据的最佳方式是什么?
现在我正在通过@playersdraftlist = @draftlist.map { |id| Player.find(id) } 检索,但这会多次访问数据库。
所以,目前,我有一个用户模型和一个草稿模型。草稿只有一个关联的user_id。
1) 将被征召者存储为用户字段而不是单独的模型会更好吗?
2) 当我需要保留欺骗和订单时,有没有更好的方法来存储这样的列表?
结构:
PlayerDraft 模型有一个关联的user_id:
draftees: [
"52f4fd9f52e39bc0c15674ea", #Peyton
"52f4fd9f52e39bc0c15674eb", #Tom
"52f4fd9f52e39bc0c15674ea" #Peyton
],
user_id: "52f581096b657612fe020000"
@draftees = Draft.find(user_id = current_user._id).first.draftees 将返回 Draftees 数组。
调用Player.find(@draftees) 将删除重复项并按_id 排序。
编辑
这是我的糟糕解决方案:
def index
@players = Player.all
if current_user.draft_list.draftees == [""]
@playersdraftlist = ""
else
# Get all picks for current user
@picks = current_user.draft_list.draftees
@draft = Player.find(@picks)
@playersdraftlist = @picks.map { |id| Player.find(id) }
end
end
【问题讨论】:
-
查看我的更新。这能解释清楚吗?
标签: ruby-on-rails gem mongoid jquery-ui-sortable