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

Fed*_*les 7 ruby-on-rails mongodb mongoid

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

class User
  include Mongoid::Document
  ...
end

class Admin < User
  ...
end
Run Code Online (Sandbox Code Playgroud)

我得到一个用户:

u = User.find(some_key)
Run Code Online (Sandbox Code Playgroud)

并尝试更改_type:

u._type  # => "User"
u._type = "Admin"
u.save
u._type  # => "Admin"
Run Code Online (Sandbox Code Playgroud)

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

u.reload
u._type = "User"
Run Code Online (Sandbox Code Playgroud)

改变这个的正确方法是什么?

tma*_*ier 8

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

user.update_attribute(:_type, "Admin")
Run Code Online (Sandbox Code Playgroud)


Fed*_*les 6

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

users.update( { :"_id" => user.id }, { :"$set" => { :"_type" => "Admin" }})
Run Code Online (Sandbox Code Playgroud)