如何在Mongoid中更改文档的_type?

时间:2011-03-15 01:51:05

标签: ruby-on-rails mongodb mongoid

我在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"

更正更改此方式的方法是什么?

2 个答案:

答案 0 :(得分:8)

你也可以使用Model#update_attribute留下mongoid:

user.update_attribute(:_type, "Admin")

答案 1 :(得分:6)

使用原始MongoDB查询结束解决它:

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