2011-03-15 18 views
6

Rails uygulamasında aşağıdaki modellere sahibim:Bir belgenin Mongoid'deki _type'ı nasıl değiştirilir?

class User 
    include Mongoid::Document 
    ... 
end 

class Admin < User 
    ... 
end 

Kullanıcıya:

u = User.find(some_key) 

Ve şunu değiştirmeye çalışıyorum:

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

Ama eğer nesneyi yeniden yüklerim hala bir kullanıcı:

u.reload 
u._type = "User" 

doğru yolu bunu değiştirmek için nedir?

+0

Onun (tip sütun ile) benim için iyi çalışıyor. '_type' yerine 'type' alanıyla deneyin. – Ashish

+0

@Ashish Burada çalışmaz: u.type # => NoMethodError: undefined method 'type 'için #

+0

u.write_attribute (' _ type ', 'Yönetici'). Ve ayrıca, belki de kaydınız başarısız oldu (doğrulama, vb.). Kaydetmeyi deneyin! – Roman

cevap

6

ham MongoDB sorgusu kullanarak çözmeye sona erdi: Ayrıca mongoid ile kalmak Model#update_attribute kullanabilirsiniz

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

Mongoid ile ham sorgu nasıl çalıştırılır? :) – gucki

7

:

user.update_attribute(:_type, "Admin") 
İlgili konular