gpt4 book ai didi

ruby-on-rails - mongoid update_attributes 改变数据类型

转载 作者:可可西里 更新时间:2023-11-01 09:14:39 25 4
gpt4 key购买 nike

我正在创建一个简单的 Rails 应用程序来修改现有 mongo 数据库中的数据。我正在使用 mongoid 进行交互,并且可以很好地读取/销毁对象。

问题是我的 mongo 文档有一个“节点”,它是一堆键值对,根据记录的不同而有所不同。当我像这样加载记录时:

MongoObject.find(BSON::ObjectId('ABC1234567890'))
=> #<MongoObject _id: ABC1234567890, node: {"totallogins"=>11, "id"=>"logIns"}>

我正在使用标准 Rails 表单来更新值,因此发布数据如下所示:

{"commit"=>"Edit", "utf8"=>"✓", "id"=>"ABC1234567890", "mongo_object"=>{"node"=>{"totallogins"=>"12", "id"=>"logIns"}}

如果我这样做:

@mongo_object.update_attributes(params[:mongo_object])

这可行,但会将“totallogins”的数据类型从 int 更改为字符串,因为发布数据是字符串。

现在 active record 自己处理这个问题,但我需要一个可以与 mongoid 一起使用的解决方案。

有什么办法可以做到这一点吗?

最佳答案

谢谢。不幸的是我不能,因为节点的字段是完全动态的,所以我不能定义它们。我想出了以下解决方案,但它有点难看:

@mongo_object.node.each do |k,v|
new_value = params[:mongo_object][:node][k.to_sym]
new_value = new_value.to_i if v.class == Fixnum

@mongo_object.node[k] = new_value
end

@mongo_object.save

关于ruby-on-rails - mongoid update_attributes 改变数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5157844/

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