【问题标题】:How to change a document's _type in Mongoid?如何在 Mongoid 中更改文档的 _type?
【发布时间】:2011-03-15 01:51:04
【问题描述】:

我在 Rails 应用程序中有以下模型:

class User
  include Mongoid::Document
  ...
end

class Admin < User
  ...
end

我得到一个用户:

u = User.find(some_key)

并尝试更改_type:

u._type  # => "User"
u._type = "Admin"
u.save
u._type  # => "Admin"

但如果我重新加载对象,它仍然是用户:

u.reload
u._type = "User"

正确的方法是什么?

【问题讨论】:

  • 它对我来说工作正常(带有类型列)。尝试使用 'type' 字段而不是 '_type'
  • @Ashish 在这里不起作用:u.type #=> NoMethodError: undefined method `type' for #<0x00000104eaf510>

标签: ruby-on-rails mongodb mongoid


【解决方案1】:

你也可以使用Model#update_attribute 来保持mongoid:

user.update_attribute(:_type, "Admin")

【讨论】:

    【解决方案2】:

    最终通过使用原始 MongoDB 查询来解决它:

    users.update( { :"_id" => user.id }, { :"$set" => { :"_type" => "Admin" }})
    

    【讨论】:

    • 如何使用 mongoid 运行原始查询? :)
    猜你喜欢
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 2011-04-22
    • 2014-03-20
    • 1970-01-01
    相关资源
    最近更新 更多