2011-03-15 58 views
6

我有一個Rails應用程序內的下列車型:如何在Mongoid中更改文檔的_type?

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" 

什麼是正確方式改變這?

+0

它爲我工作的罰款(含類型的列)。嘗試'type'字段而不是'_type' – Ashish 2011-03-15 06:00:59

+0

@Ashish在這裏不起作用:u.type#=> NoMethodError:undefined方法'type'for#<用戶:0x00000104eaf510> – 2011-03-20 18:07:31

+0

嘗試u.write_attribute('_ type', '管理員')。此外,也許你的保存失敗(驗證等)。試試保存! – Roman 2011-04-15 10:30:02

回答

6

最終被使用原始的MongoDB查詢解決它:

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

如何使用mongoid運行原始查詢? :) – gucki 2011-12-02 19:11:58