我目前正在从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
谢谢!
答案 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