1
我一直在我的Sinatra应用程序中删除嵌入文档,运行Mongoid 2.4时出现问题。这里是我的模型关系的基本概况:在Mongoid中删除2级深度嵌入文档
class User
has_many :posts
end
class Post
belongs_to :user
embeds_many :comments
embeds_many :likes, as: :likeable
end
class Comment
field :poster_id, type: String
embedded_in :post
embeds_many :likes, as: :likeable
end
class Like
field :user_id, type: String
embedded_in :likeable, polymorphic: true
end
缺失代码开始就是这样,没有问题:
# Deletes comments the user created
Post.where('comments.poster_id' => params[:userid]).each do |post|
post.comments.where(poster_id: params[:userid]).delete_all
end
# Delete likes on posts the user created
Post.where('likes.user_id' => params[:userid]).each do |post|
post.likes.where(user_id: params[:userid]).delete_all
end
但是,试图删除的帖子的评论喜欢时,mongoid失败。它似乎不能两层深:
# Delete likes on comments the user created (broken)
Post.where('comments.likes.user_id' => params[:userid]).each do |post|
post.comments.likes.where(user_id: params[:userid]).delete_all
end
我该如何删除它们?
您的解决方案完美无瑕。非常感谢你的快速回复,我希望它能帮助别人。 –