2011-03-15 15 views
6

tengo los siguientes modelos dentro de una aplicación Rails:¿Cómo cambiar el _type de un documento en Mongoid?

class User 
    include Mongoid::Document 
    ... 
end 

class Admin < User 
    ... 
end 

Puedo obtener un usuario:

u = User.find(some_key) 

Y tratar de cambiar la _type:

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

Pero si vuelvo a cargar el objeto sigue siendo un usuario:

u.reload 
u._type = "User" 

¿Cuál es la forma correcta de para cambiar esto?

+0

Su trabajando bien para mí (con columna de tipo). Pruebe con el campo 'tipo' en lugar de '_type' – Ashish

+0

@Ashish No funciona aquí: u.type # => NoMethodError: método indefinido 'type 'para #

+0

Pruebe u.write_attribute (' _ type ', 'Administración'). Y además, tal vez su salvación falló (validación, etc.). Intenta ahorrar! – Roman

Respuesta

6

Terminamos resolverlo mediante una consulta MongoDB prima:

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

¿Cómo ejecutar una consulta cruda con mongoid? :) – gucki

Cuestiones relacionadas