gpt4 book ai didi

ruby-on-rails-3 - 从mongodb中的数组中删除对象

转载 作者:可可西里 更新时间:2023-11-01 10:07:21 26 4
gpt4 key购买 nike

我在 Rails 上使用 Mongodb(Mondoid 映射器)进行了简单的应用。脚手架posts ,并且我试图实现评级功能。 Post具有下一个结构:

> class Post
include Mongoid::Document
include Mongoid::Timestamps

field :title, type: String
field :description, type: String
field :rank, type: Integer, default: "0"
field :voter_up, type: Array, default: []
field :voter_down, type: Array, default: []

如您所见,有两个字段 voter_up , _down .它是添加用户,这取决于他们如何投票。 self.voter_up << user.id , 或 self.voter_down << user.id .在数据库中它看起来像:

"voter_up" : [
ObjectId("4ee08b6e405f3d0a29000005"),
ObjectId("4ee0aaff405f3d0a2900003a")
]

如果用户改变主意并想投反对票。例如,在第一次用户投票时。然后投了反对票。在这种情况下,我需要从数组 voter_up 中删除该用户并添加到 voter_down .从 Rails 控制台可以正常工作 array.delete(object) , 但如果我尝试 self.voter_up.delete(user.id)在模型函数中 - 没有任何反应。为什么?

最佳答案

恐怕您的控制台和模式都可以。因为您在这里使用的 delete 是 ruby​​ 数组方法而不是 mongoids。所以你需要在删除后调用保存将更改的数组推送到服务器。

     self.voter_up.delete(user.id)
self.save

关于ruby-on-rails-3 - 从mongodb中的数组中删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8432487/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com