Mongoid:我可以嵌入很多并参考其中的一个嵌入式?

时间:2013-03-18 03:12:47

标签: ruby mongodb ruby-on-rails-3.1 mongoid mongoid3

我有一个游戏列表。每个人都有一个嵌入的分数列表。我想继续提及分数列表之外的最佳分数。

class Game
  include Mongoid::Document
  field :best_score_id, type: Moped::BSON::ObjectId
  ... 
  embeds_many :scores

class Score 
  include Mongoid::Document
  field :user, type: String
  field :score, type: Int

我尝试了belongs_tohas_one,但收到了错误消息:“由于价格历史已嵌入,因此不允许通过关系关联从游戏文档中引用分数文档。”我想我可以将得分的相关位存储在名为“best_score”的哈希中,但是对我来说更有意义的是嵌入许多分数然后将其中一个引用为“最佳”。这可能吗?

1 个答案:

答案 0 :(得分:0)

你可以这样做 -

编写一种方法来选择游戏模型类中的最佳分数 -

def best_score
  score = scores.order_by(:score, :desc).limit(1)
  if score.nil?
    nil
  else
    score.first
  end
end

由于分数嵌入游戏中,因此数据库也不会有任何+1查询。