Estamos en mongodb 2.0.0, mongo gem 1.4.1, mongo_mapper 0.9.2, rieles 3.0.6.Fallo de la operación de desmantelamiento para el modelo MongoMapper, no se puede eliminar/eliminar la clave del modelo
Nos encanta MongoMapper, pero necesitamos ayudar a resolver un desagradable problema: tenemos una clave heredada de algunas pruebas, pero al invocar obj.unset no se puede hacer nada.
Específicamente, estamos intentando eliminar una clave "id" (no "_id") porque está causando que MM trate obj.id como diferente de obj._id, lo que no queremos.
Después de la limpieza de la base de datos, nos encontramos con estos comandos desde un controlador que no hace otra cosa: (También tratamos de ejecutar el mismo código de la consola rieles, pero también falla.)
logger.info "#{Game.keys.keys.inspect}"
Game.unset({}, :id)
logger.info "#{Game.keys.keys.inspect}"
Game.unset(:id)
logger.info "#{Game.keys.keys.inspect}"
de salida:
teclas["jackpot", "players", "created_at", "puzzles", "ended_at", "player_index", "updated_at", "log", "_id", "id", "join_code", "puzzle_index"]
["jackpot", "players", "created_at", "puzzles", "ended_at", "player_index", "updated_at", "log", "_id", "id", "join_code", "puzzle_index"]
["jackpot", "players", "created_at", "puzzles", "ended_at", "player_index", "updated_at", "log", "_id", "id", "join_code", "puzzle_index"]
actuales definidos en nuestro modelo de juego:
key :players, Array, :default => []
key :player_index, Integer, :default => 0
key :puzzles, Array, :default => []
key :puzzle_index, Integer, :default => 0
key :join_code, String, :default => nil
key :jackpot, Integer, :default => 0
key :log, Array, :default => []
key :created_at, Time
key :updated_at, Time
key :ended_at, Time, :default => nil
Ayuda?
Gracias!
¿Por qué aún podría estar en Mongo 1.4.1? Hay una serie de errores y problemas de rendimiento en esa versión. El primer paso parece actualizar a la última versión de la base de datos y MM y luego ver si el problema persiste. –
Creo que "mongo" se refiere a la versión de gema, 1.4.1 es reciente. Además, esta pregunta fue respondida en la lista de correo: http://groups.google.com/group/mongomapper/browse_thread/thread/20ea194868195c3e TL; DR unset solo funciona en la base de datos, pero MM siempre recuerda qué teclas ha visto y guarda nuevos documentos con ellos. Necesita volver a cargar el documento y/o reiniciar el servidor. Relacionado con el número 195 https://github.com/jnunemaker/mongomapper/issues/195 –
Gracias, ambos. Sí, "mongo" se refiere a la gema. Actualizaremos la pregunta para aclarar esto. Plastic Chicken, tratamos de reiniciar el servidor de Mongo y el servidor de aplicaciones, pero tal vez también tengamos que volver a cargar el documento. ¡Gracias de nuevo! – Crashalot