你如何使用mongoid 3+中的has_many_related关系?

时间:2012-09-08 10:03:44

标签: ruby-on-rails mongoid

我目前正在从mongoid 2.0迁移到mongoid 3.0.5。我在对象中的一个关系是has_many_related。如何将其迁移到mongoid 3.0.5?我通过谷歌搜索或mongoid.org和two.mongoid.org网站找不到任何相关文档。有什么地方我应该看吗?

以下是代码:

  has_many_related :food_review do
    def find_or_initialize_by_user_id(user_id)
      criteria.where(:user_id => user_id).first || build(:user_id => user_id)
    end
  end

谢谢!

2 个答案:

答案 0 :(得分:4)

只需使用has_many而不是has_many_related。

例如:

class User
  include Mongoid::Document
  field :name, type: String
  field ...

  has_many :food_reviews

  def find_or_initialize_by_user_id(user_id)
    criteria.where(:user_id => user_id).first || build(:user_id => user_id)
  end
end

class FoodReview
  include Mongoid::Document
  field ...

  belongs_to :user
end

注意复数has_many :food_reviews和单数class FoodReview。如果您想引用单一评论,只需use has_one :food_review(请参阅Referenced 1-1

答案 1 :(得分:2)

查看mongoid 2.0的代码has_many_related只是has_many的别名:

➜  mongoid  git grep has_many_related
lib/ mongoid/relations/macros.rb:        alias :has_many_related :has_many

只需将其更改为:has_many并保持代码相同即可。在Mongoid文档here

中有一个块的示例:has_many