Overview
Para obtener instrucciones sobre cómo actualizar a versiones más recientes, visite mongoid.org.
A partir de la versión 5.0.2, por favor, consulta las publicaciones de github para los registros de cambios.
5.0.1
Problemas resueltos
- MONGOID-3020 Se añadió una prueba para mostrar que ya no es un problema.
- MONGOID-3025 Se añadió una prueba para mostrar que ya no es un problema.
- MONGOID-3061 El problema ha dejado de existir.
- MONGOID-3073 Se añadió una prueba para mostrar que ya no es un problema.
- MONGOID-3085 Se añadió una prueba para mostrar que ya no es un problema.
- MONGOID-3101 El problema ha dejado de existir.
- MONGOID-3160 El problema ha dejado de existir.
- MONGOID-3176 El problema ha dejado de existir.
- MONGOID-3214 Se añadió una prueba para mostrar que ya no es un problema.
- MONGOID-3296 Añadir el función de retorno a actualizar para counter_cache.
- MONGOID-3326 Se añadió una prueba para mostrar que ya no es un problema.
- MONGOID-3361 El problema ha dejado de existir.
- MONGOID-3365 Se añadió una prueba para mostrar que ya no es un problema.
- MONGOID-3402 Aplica opciones de persistencia al padre.
- MONGOID-3524 El problema ha dejado de existir.
- MONGOID-3529 La prueba ya existe, lo que demuestra que no es un problema.
- MONGOID-3543 La prueba ya existe, lo que demuestra que no es un problema.
- MONGOID-3611 Se añadió una prueba para mostrar que ya no es un problema.
- MONGOID-3650 El problema ha dejado de existir.
- MONGOID-3826, MONGOID-4109 Corrección de fugas de atemporalidad.
- MONGOID-3946 Se añadió una prueba para mostrar que ya no es un problema.
- MONGOID-3969 Se añadió una prueba para mostrar que ya no es un problema.
- MONGOID-3971 No es un problema.
- MONGOID-3979 No es un problema, las pruebas ya existen.
- MONGOID-3985 No es un problema.
- MONGOID-4078 El comportamiento es intencionado.
- MONGOID-4079 No es un problema.
- MONGOID-4088 Considera la notación de puntos en subdocumentos con los resultados de #pluck.
- MONGOID-4098 Corregido mediante un cambio en el driver de Ruby. Véase RUBY-1029.
- MONGOID-4101 No es un problema.
- MONGOID-4106 No es un problema.
- MONGOID-4110 No es un problema.
- MONGOID-4119 Asegúrate de que el selector de criterios se convierta en un valor de operador de pipeline.
- MONGOID-4121 No es un problema.
- MONGOID-4123 Arreglado como resultado de MONGOID-4159.
- MONGOID-4125 Asegúrese de que no se apliquen ámbitos no referenciados en los procs.
- MONGOID-4132 No es un problema.
- MONGOID-4157 Corregido en la versión 2.1.2 del driver de Ruby.
- MONGOID-4162 adapta los mapeos de opciones de índices al nuevo controlador. (@Nielsomat)
- MONGOID-3737 Se añadió una prueba para mostrar que ya no es un problema.
- MONGOID-3621 No es un problema.
- MONGOID-3551 No es un problema.
- MONGOID-3696 Se añadió una prueba para mostrar que ya no es un problema.
- MONGOID-3858 Se añadió una prueba para mostrar que ya no es un problema.
- MONGOID-3672 No es un problema.
- MONGOID-4172 Utilice el operador posicional solo en una anidación de nivel 1 de profundidad.
- Certificado público añadido al repositorio y rubi firmado cuando la llave privada está presente
5.0.0
Cambios principales (incompatibles con versiones anteriores)
-
Mongoid ahora utiliza el controlador oficial de Mongo Ruby 2.x en lugar de Moped.
-
La mayoría de las opciones de configuración específicas del controlador han cambiado; consulta aquí para ver las nuevas opciones.
-
Todas las referencias a
sessionse sustituyen ahora porclient. Esto incluye la configuración de mongoid.yml, opcionesstore_in, y todas las excepciones y módulos conSessionen el nombre. -
find_and_modifyha sido eliminado y reemplazado con 3 opciones:find_one_and_update,find_one_and_deleteyfind_one_and_replace. -
text_searchha sido eliminada ya que ahora es una opción$texten una query a partir del 2.6. -
Mongoid ya no soporta MongoDB 2.2; ahora el soporte es solo para 2.4 y superiores.
-
#3768
firstylastya no añaden una ordenación_idcuando no se han proporcionado opciones de ordenación. Para garantizar que un documento sea el primero o el último, ahora debe contener una ordenación explícita. -
Document#deleted?el alias ha sido eliminado, por favor continúa utilizandoDocument#destroyed?.
Nuevas características:
-
#4016 Permitir los setters privados y protegidos en los campos para operaciones atómicas. (Rob Smith)
-
#3985 Retornar nil al usar
{upsert: true}enfind_and_modify(Adrien Siami) -
#3963 Permite que los identificadores de objetos JSON extendidos se pasen a
find. -
#3846 Permitir #pluck cuando no se utiliza ninguno en los criterios. (Braulio Martínez)
Problemas resueltos
-
#4091 Usa el contexto de subclase al llamar a un scope definido en una superclase. (Edgars Beigarts)
-
#4075 Se ha realizado el registro de remoción de índices específico para cada índice que realmente se estaba removiendo.
-
#4071 Se ha corregido la carga de la relación enumerable para comprobar los documentos añadidos al iterar.
-
#4077 Muchas relaciones ahora incluyen Enumerable.
-
#4052 Se corrigió la validación de unicidad en campos localizados sin valor.
-
4033 Eliminados todos los usos del operador posicional $ en las actualizaciones atómicas.
-
#4030 Las excepciones de Duplicados/Clonación incluyen automáticamente los atributos dinámicos.
-
#4005 Se ha corregido la inclusión de mongoid con componentes de Rails que no tienen el entorno de Rails.
-
#3993 Corrige el problema en el que
dup/clonefalla para documentos incrustados que usan store_as sin usar Mongoid::Attributes::Dynamic -
#3991 Se corrigieron los documentos incrustados que no se marcaban como cambiados después de llamar a #changed? y modificando los elementos secundarios.
-
#3874 Agregar la opción de snapshot al contexto.
-
#3868 La carga de modelos en las tareas rake ahora Amplia la ruta de rails.
-
#3764 Comprobación fija de instrucción de caso para objetivos enumerables.
-
#3740 Corrige
Missing attribute: '_id'error al usar métodos solo o sin ellos (dx7) -
#3631 Corrige el problema donde la función de retorno
before_savepuede ser llamada dos veces después de la creación de un elemento secundario -
#3599 Se corrigió la aplicación de los ámbitos por defecto de la superclase en las subclases.
-
#3104 Se corrigieron los objetivos enumerables para verificar el primero y el último en el orden adecuado.
4.0.2
Nuevas características:
-
#3931 Agrega #find_or_create_by! método para muchas asociaciones. (Tom Beynon)
-
#3731 Añadir find_by! método. (Guillermo Iguarán)
Problemas resueltos
-
#3722 Usa el nombre correcto para la base de datos al combinar #store_in y #with. (Arthur Neves)
-
#3934 No aplique la ordenación al realizar un find_by. (Arthur Neves)
-
#3935 corrige la clasificación de varios campos en memoria contextual. (chamnap)
-
#3904 BSON::Document#symbolize_keys debe devolver las documento como símbolos. (Arthur Neves)
-
#3948 Solucionar remove_undefined_indexes en rails 4.2, para simbolizar correctamente las claves del documento. (Adam Wróbel)
-
#3626 Document#to_key, necesita devolver un ObjectId como String para que podamos hacer la query usando ese ID. (Arthur Neves)
-
#3888 ocurre un UnknownAttributeError cuando se llama 'set' en un campo inexistente y Mongoid::Attributes::Dynamic no está incluido en el modelo. (Shweta Kale)
-
#3889 'set' permitirá establecer el valor de un campo que no existe cuando Mongoid::Attributes::Dynamic esté incluido en el modelo. (Shweta Kale)
-
#3812 Se corrigió el contexto de validación al guardar (Yaroslav Zemlyanuhin)
4.0.1
Problemas resueltos
-
#3911 Corrija las relaciones denominadas "parent". (nkriege)
-
#3792/#3881 Corrige muchas llamadas internas a #_id en lugar de #id para evitar problemas al sobrecargar #id (Gauthier Delacroix)
-
#3847 Corrige el resultado de 'QueryCache#get_more', cuando la colección tiene más documentos que el primer lote de query. (Angelica Korsun)
-
#3684 No elevar MissingAttributeError, al usar un alcance only(). (Arthur Neves)
-
El método pluck de #3703 no debe compactar los valores. (Arthur Neves)
-
#3773 Para el dicho timestamp de cache_key, utiliza nanosegundos en lugar de segundos simples. (Máximo Mussini)
4.0.0
Cambios principales (incompatibles con versiones anteriores)
-
#3320 Elimine las dependencias de Rails en las tareas rake de la base de datos. (Arthur Neves)
All db:* rake tasks should work as before when using Rails. When not in a Rails, just load the database tasks using: load 'mongoid/tasks/database.rake' -
Mongoid 4 solo es compatible con MongoDB 2.4.0 y versiones superiores.
-
Document#metadataha sido renombrado comoDocument#relation_metadatapara evitar conflictos comunes. Los proxies de relación también han cambiado este nombre por el mismo. -
Ahora todos los alcances y alcances por defecto deben definirse dentro de lambdas o procs.
-
skip_version_checkla opción de configuración se eliminó. -
IdentityMap eliminado. (Arthur Neves)
-
Reelaboración de carga ansiosa. La carga anticipada ahora no necesita el mapa de identidad para cargar documentos relacionados. Un conjunto de precargadores puede cargar de forma anticipada las asociaciones pasadas a .includes método. (Arthur Neves)
-
Mongoid ahora soporta las nuevas preferencias de lectura que los drivers principales proporcionan. Éstos incluyen:
- `:primary`: Will always read from a primary node. (default) - `:primary_preferred`: Attempt a primary first, then secondary if none available. - `:secondary`: Will always read from a secondary node. - `:secondary_preferred`: Attempt a secondary first, then primary if none available. - `:nearest`: Attempt to read from the node with the lowest latency. Sample syntax: Person.with(read: :secondary).first The `:consistency` option is no longer valid, use the `:read` option now. -
Ahora Mongoid establece por defecto que todos los guardados se propaguen (antes "modo seguro") y ahora cuenta con una semántica de propagación diferente:
- `{ w: -1 }`: Don't verify writes and raise no network errors. - `{ w: 0 }`: Don't verify writes and raise network errors. - `{ w: 1 }`: Verify writes on the primary node. (default) - `{ w: n }`: Verify writes on n number of nodes. - `{ w: "majority" }`: Verify writes on a majority of nodes. Sample syntax: Person.with(write: {w: :majority}).create!(name: "John") The `:safe` option is no longer valid use the `:write` option now. -
#3230 Los campos de arreglo y hash ahora verifican que se estén asignando los tipos correctos, en lugar de aceptar cualquier tipo de valor. (Rodrigo Saito)
-
#3043/#2949 Renovación en los elementos internos de las opciones de persistencia. (Arthur Neves)
-
Mongoid ahora requiere Active Model 4 o superior.
-
Document#setahora acepta múltiples atributos en forma de hash, en lugar de los anteriores(field, value)argumentos. Los alias de campo y la conversión de tipo también son ahora compatibles en esta operación.document.set(name: "Photek", likes: 10000) -
Document#renameahora acepta múltiples atributos en forma de hash, en lugar de los anteriores(field, value)arg. Se admiten alias de campo.document.rename(first_name: "fn", last_name: "ln") -
Document#incahora acepta múltiples atributos en forma de hash, en lugar de antes solo poder incrementar un valor a la vez. Se admiten alias y serialización.document.inc(score: 10, place: -1, lives: -10) -
Document#popahora acepta múltiples atributos en forma de hash, en lugar de sólo poder extraer un valor a la vez como anteriormente. Se admiten alias y serialización.document.pop(names: 1, aliases: -1) -
Document#bitahora acepta múltiples atributos en forma de hash, en lugar de poder aplicar solo un conjunto de operaciones a la vez como antes. Se admiten alias y serialización.document.bit(age: { and: 13 }, score: { or: 13 }) -
Document#pullahora acepta múltiples atributos en forma de hash, en lugar de la posibilidad anterior de extraer un solo valor a la vez. Se admiten alias y serialización.document.pull(names: "James", aliases: "007") -
Document#pull_allahora acepta múltiples atributos en forma de hash, en lugar de la posibilidad anterior de extraer un solo valor a la vez. Se admiten alias y serialización.document.pull_all(names: ["James", "Bond"], aliases: ["007"]) -
Document#push_allse ha eliminado debido a que fue desaprobado en MongoDB 2.4. UtilizaDocument.pushen su lugar. -
Document#pushahora acepta múltiples atributos en forma de hash y puede gestionar la inserción de valores únicos o múltiples al campo a través de $push con $each. Se admiten alias y serialización.document.push(names: "James", aliases: [ "007", "Jim" ]) -
Document#add_to_setahora acepta múltiples atributos en forma de hash, y ahora se admiten alias y serialización.document.add_to_set(names: "James", aliases: "007") -
La API de operaciones atómicas de criterios ahora se modifica para que coincida con los cambios en la API atómica de documento único, por ejemplo:
Band.where(name: "Depeche Mode").inc(likes: 10, followers: 20) -
#3399 #create y #create! en relaciones ahora pueden tomar un arreglo de atributos como primer parámetro para crear varios documentos a la vez.
person.addresses.create([{ street: "Bond" }, { street: "Upper" }]) person.addresses.create!([{ street: "Bond" }, { street: "Upper" }]) -
#3141
rake db:test:prepareahora configura todos los índices definidos si Mongoid es el único ODM/ORM en el entorno. -
Ahora se puede acceder a #3138
update_attributessimplemente llamando alupdate. -
#3083 Se ha añadido una nueva tarea rake:
rake db:mongoid:remove_undefined_indexespara remover índices de la base de datos que no estén definidos explícitamente en los modelos. (Aidan Feldman) -
#3029 El campo
relation_fieldque se añade para un caso de uso único con relaciones polimórficas ha sido eliminado. Así que donde antes funcionaría lo siguiente:class Eye include Mongoid::Document belongs_to :eyeable, polymorphic: true end class Face include Mongoid::Document has_one :left_eye, class_name: "Eye", as: :eyeable has_one :right_eye, class_name: "Eye", as: :eyeable end This would now need to be modeled as (with the appropriate migration): class Eye include Mongoid::Document belongs_to :left_socket, class_name: "Face", inverse_of: :left_eye belongs_to :right_socket, class_name: "Face", inverse_of: :right_eye end class Face include Mongoid::Document has_one :left_eye, class_name: "Eye", inverse_of: :left_socket has_one :right_eye, class_name: "Eye", inverse_of: :right_socket end -
#3075
update_attributeahora llama correctamente al método setter en lugar de usarwrite_attribute. -
#3060 Permitir bloques atómicos para permitir múltiples llamadas del mismo tipo. (Brian Norton)
-
Los índices de modelo #3037 ya no se almacenan en un hash
index_optionsen la clase del modelo. En cambio, ahora existe un arreglo llamadoindex_specificationsen la clase que contiene una lista de objetosIndexable::Specification. Esto es para que podamos gestionar adecuadamente el caso de índices con las mismas claves pero en diferente orden. -
#2956 El almacenamiento en caché de las consultas ahora solo ocurre cuando se llama específicamente a
cache. (Arthur Neves) -
#2659
Mongoid::Railtieahora usa correctamente solo un inicializador y el nombre ha cambiado amongoid.load-config. -
#2656
rake db:reseedahora esrake db:reset(Arthur Neves) -
#2648
Booleanse convierte enMongoid::Booleanpara evitar contaminar el espacio de nombres global con una clase comúnmente usada por otras librerías. -
#2603 Los valores devueltos por los modificadores ahora siempre son el valor establecido, independientemente de si se llama al modificador o se utiliza send.
-
#2597
Mongoid::Observerfue eliminado en línea con Rails 4. -
#2563 La opción de configuración
allow_dynamic_fieldsha sido eliminada ya que ahora se permiten campos dinámicos a nivel de modelo. Para permitir que un modelo utilice campos dinámicos, simplemente incluya el módulo en cada uno. (Josh Martin)class Band include Mongoid::Document include Mongoid::Attributes::Dynamic end -
#2497 Llamar a
to_jsonya no interfiere con el valor de retorno del driver, y ahora se devuelven los valores correctos{ "$oid" : object_id.to_s }en lugar de solo la representación en string como se hacía anteriormente. -
Se ha eliminado2433
Mongoid::Paranoia. -
Se ha eliminado2432
Mongoid::Versioning. -
#2218 Crear o instanciar documentos que tengan ámbitos predeterminados ahora aplicará el ámbito predeterminado al documento, si el ámbito no es complejo.
-
#2200 La seguridad de la asignación masiva ahora imita el comportamiento de Rails 4. La opción
without_protectiontambién fue eliminada. Se eliminó el método de claseattr_accessible. Mongoid y Strong parameters deberían funcionar bien para la protección asignación masiva. -
delete_allydestroy_allya no toman un hash:conditionssino solo los atributos en crudo. -
Los documentos ##1908 ## que ahora se cargan desde los criterios usando ##
#only## o ###without## ahora generarán un error al intentar guardar, actualizar o borrar estos registros. Además, los campos excluidos de los campos recuperados de la base de datos también generarán una excepción al intentar acceder a ellos. -
#1344 Las actualizaciones atómicas ahora pueden ejecutarse en un bloque
atomically, lo que retrasará cualquier actualización atómica en el documento al que se llamó el bloque hasta que el bloque esté completo.Update calls can be executed as normal in the block: document.atomically do document.inc(likes: 10) document.bit(members: { and: 10 }) document.set(name: "Photek") end The document is also yielded to the block: document.atomically do |doc| doc.inc(likes: 10) doc.bit(members: { and: 10 }) doc.set(name: "Photek") end The atomic commands are have a fluid interface: document.atomically do |doc| doc.inc(likes: 10).bit(members: { and: 10 }).set(name: "Photek") end If the fluid interface is leveraged without the `atomically` block, the operations will persist in individual calls. For example, the following would hit the database 3 times without the block provided: doc.inc(likes: 10).bit(members: { and: 10 }).set(name: "Photek") The block is only good for 1 document at a time, so embedded and root document updates cannot be mixed at this time.
Nuevas características:
-
Mongoid ahora usa ActiveSupport::LogSubscriber para subscribirse a los registros, y ActiveSupport::Notifications para enviar registros de operaciones. (Arthur Neves) Ejemplo de suscripción a registros:
ActiveSupport::Notifications.subscribe('query.moped') do |event| .. end -
Los Tipos de campo ahora pueden usar símbolos así como nombres de clase. Consulta: https://github.com/mongoid/mongoid/blob/master/lib/mongoid/fields.rb#L16 para ver los mapeos disponibles.
-
#3580 Los campos ahora se pueden restablecer a sus valores por defecto, con los métodos:
document.reset_name_to_default! -
Los documentos de #3513 ahora tienen un método
#destroy!que generará un errorMongoid::Errors::DocumentNotDestroyedsi una función de retorno de destrucción retorna un valor falso. -
#3496 Se agregaron niveles de clase y niveles de criterio
find_or_create_by!. -
#3479 Map/reduce ahora respeta los criterios de no opciones de tiempo de espera si la salida no es en línea.
-
Los objetos de criterios de #3478 ahora tienen un método #none que hará que los criterios nunca accedan a la base de datos y siempre tengan cero documentos.
Band.none Band.none.where(name: "Tool") # Always has zero documents. -
#3410 Mongoid ahora tiene una caché de query que puede utilizarse como middleware en aplicaciones Rack. (Arthur Neves)
For Rails: config.middleware.use(Mongoid::QueryCache::Middleware) -
#3319 Los contadores ahora se pueden reiniciar desde una instancia de documento:
document.reset_counters(:relation) -
Las relaciones #3310 embedded_in ahora aceptan una opción
touchpara actualizar padres. -
#3302 El uso de alias con
alias_attributeahora maneja adecuadamente los alias en los criterios. -
El campo de rango #3155 mantendrá el exclude_end cuando se proporcione. (Daniel Libanori)
-
#3146 Añadiendo la opción de campo :overwrite, cuando sea verdadero, no se comprobarán los duplicados. (Daniel Libanori)
-
#3002 Recargar la consola de Rails también borrará ahora el mapa de identidad de Mongoid.
-
#2938 Se ha añadido una opción de configuración
duplicate_fields_exceptionque, cuando se establece entrue, generará una excepción al definir un campo que sobrescribirá un método existente. (Arthur Neves) -
#2924 MongoDB 2.4 la búsqueda beta de texto ahora cuenta con un DSL proporcionado por Mongoid. Al igual que otras consultas, las búsquedas de texto se evalúan de manera perezosa y están disponibles a partir del nivel de clase o criterio.
Note that any 3rd party gem that provides a `text_search` method will now no longer work with Mongoid, and will need to change its syntax. Examples: Band.text_search("mode").project(name: 1).each do |doc| # ... end Band.limit(10).text_search("phase").language("latin") Band.where(:likes.gt => 1000).text_search("lucy") -
#2855 Ahora se pueden suministrar múltiples extensiones a las relaciones. (Daniel Libanori)
Problemas resueltos
-
#3676 Hacer que pluck funcione con asociaciones integradas (Arthur Neves)
-
Los métodos de atributos sucios de #2898 ahora gestionan correctamente los alias de campos. (Niels Ganser)
-
#3620 Añade los métodos de instancia del módulo ActiveModel a la lista de métodos prohibidos. (Arthur Neves)
-
#3610 No permitir operaciones atómicas en atributos de solo lectura (Frederico Araujo)
-
#3619 No valides documentos que estén marcados para su destrucción. (Christopher J. Bottaro)
-
#3617 No omita la creación de índices en documentos cíclicos. (shaiker)
-
#3568 Se corrigió el error de atributos ausentes en los campos localizados presentados.
-
#3514 Corregida la caché de la consulta para que funcione en la primera/última llamada.
-
#3383/#3495 Corregir has_and_belongs_to_many para carga ansiosa. (Arthur Neves)
-
#3492 Las operaciones de $rename no deben mongoizar los valores. (Vladislav Melanitskiy)
-
#3490 Permitir que los campos localizados funcionen con valores booleanos
false. -
#3487 Asocia booleano con Mongoid::Boolean en las definiciones de campo. (Arthur Neves)
-
#3449 Touch debe funcionar para crear y actualizar. (Greggory Rothmeier)
-
#3347 Al crear documentos a partir de ámbitos para relaciones integradas, ahora se establece correctamente el documento principal en los elementos hijos creados.
-
#3432 Se corrigió la mongoización de DateTime que causaba pérdida de precisión.
-
#3397 Se corrigió el comparador $ne para documentos incrustados para que coincida con el comportamiento del servidor.
-
#3352 Permitir que los ámbitos nombrados llamados "abrir" funcionen a través de relaciones 1-n.
-
#3348 Solucionando los índices compuestos que tienen las mismas claves en diferentes direcciones. (Arthur Neves)
-
#2701 Solucionando una query extra en la vinculación belongs_to. (Arthur Neves)
-
#3089 Permitir la desmongoización de cadenas a flotantes (Daniel Libanori)
-
#3278 El caché del contador también debería actualizar el documento en la memoria. (Arthur Neves)
-
#3242 La relación Has_many debe utilizar la clave foránea inversa. (Arthur Neves)
-
#3233 No double llamar las funciones de retorno de validación dos veces cuando la validación en cascada de hijos y relaciones esté activada.
-
#3197 Mejoras en las llamadas a
aggregatesen las colecciones raíz e incrustadas. (Wojciech Piekutowski) -
#3144/#3219 Corrigiendo el choque de nombres en ivar @_children. (Arthur Neves)
-
El campo de rango #3088 puede aceptar un hash, que podría ser el atributo de la base de datos. (Daniel Libanori)
-
#3116 Las variables de instancia de Relaciones ahora están todas precedidas por
_. -
#3093 Solo nivelar 1 nivel al insertar arreglos atómicamente.
-
#3063
Document#becomesahora establece correctamente el objeto base en caso de errores. (Adam Ross Cohen) -
Las operaciones atómicas #3019 ya no intentarán persistir si el documento no se ha guardado.
-
#2903 Se ha eliminado la extensión de string no utilizada
to_a.
3.1.7
Problemas resueltos
-
#3465 Errores de relación ambigua corregidos donde inverse_of está establecido en nil.
-
#3414 Omitir opciones de retroporte y límite en la agregación. (Wojciech Piekutowski)
-
#3469 Corrección de RegexpError: no se pudo asignar memoria: /./ en .hash_dot_syntax? (Dmitry Krasnoukhov)
3.1.6
Problemas resueltos
-
#3337 Asegúrate de que el mapa de campos localizados se clone con herencia.
-
#3262 Se corrigieron las operaciones atómicas de arreglos en los campos de clave externa HABTM para evitar que elementos individuales se conviertan en arreglo.
-
#3282 Corrigido .timeless opción de utilizar un thread local en lugar de un atributo de clase. También elimine los métodos atemporales de todos los Docs y añada solo a los Docs de marcas de tiempo. (Arthur Neves)
3.1.5
Problemas resueltos
-
#3231 Permitir la evolución de documentos proxy para trabajar en criterios.
-
#3247 Actualización de la dependencia de tzinfo a 0.3.29.
-
#3203 Se corrigió la especificación
index: truepara las relaciones polimórficas. -
#3192 Campos alias fijos + combinaciones de campos localizados con validación. (Johnny Shields)
-
#3173 Se corrigieron los problemas relacionados con las relaciones varios a varios con llaves primarias personalizadas. (Bowen Sun)
-
Ahora la actualización de #3159 marca correctamente los documentos como persistentes.
-
#3137 Permitir múltiples conjuntos de
belongs_toseguidos con IDs. -
#3079 Los Docs Embedded con paranoia se estaban perdiendo el _id al recargar desde la base de datos, ya que no tenían el valor persisted correcto. valor. (Arthur Neves)
-
Los
method_missingde los criterios de #3081 ahora verifican si un arreglo responde al método proporcionado antes de llamar a las entradas, para no acceder a la base de datos si se genera unaNoMethodError. -
#3068 Corrige las pruebas de especificaciones en puertos de MongoDB no estándar si se establece
MONGOID_SPEC_PORT. -
#3047 Asegura que
blank?yempty?no se pierdan debido a la ausencia de métodos en los criterios. -
Incluye updated_at en cache_key incluso cuando es una marca de tiempo corta (Arthur Neves)
3.1.4
Problemas resueltos
-
#3044 Asegúrese de que los objetivos enumerables coincidan con los arreglos en las declaraciones de caso.
-
#3034
first_or_createen el criterio ahora pasa correctamente el bloque para crear en lugar de llamar después de que se haya creado el documento. -
#3021 Se eliminó la advertencia
mongoid.ymldel inicializador, ahora se maneja mediante las opciones de configuración de la sesión. -
#3018 El validador de Unicidad ahora serializa correctamente los valores en su verificación. (Jerry Clinesmith)
-
#3011 Se ha corregido el soporte de alias de campo para la validación de unicidad. (Johnny Shields)
-
#3008 Se corrigió que las subclases fijas no pudieran heredar los alcances adecuadamente cuando el alcance se añade tras la carga de la clase. (Mike Dillon)
-
#2991
Document.timelessahora se delimita correctamente a la instancia y no al thread. -
#2980 Los campos dinámicos ahora manejan correctamente la edición in situ de hashes y arreglos. (Matthew Widmann)
-
#2979
pluckya no modifica el contexto en el lugar. (Brian Goff) -
#2970 Corregir el caché del contador para usar correctamente el nombre de la relación si está disponible, luego el nombre de la clase inversa si no.
-
#2959 Los atributos anidados ahora respetarán a
autosave: falsesi se define en la relación. -
#2944 Validación de unicidad corregida para campos localizados cuando la distinción entre mayúsculas y minúsculas está desactivada. (Vladimir Zhukov)
3.1.3
Problemas resueltos
-
No duplique documentos incrustados al guardar después de llamar al método become. (Arthur Neves)
-
#2961 Al volver a cargar una configuración mongoid.yml ahora se borran correctamente las sesiones configuradas previamente.
-
#2937 Ahora las cuentas pueden aceptar un argumento
truepara tener en cuenta la omisión y el límite. (Arthur Neves) -
#2921 No utilices el tipo en la selección de mapas de identidad si la herencia no está en juego. (Arthur Neves)
-
#2893 Se eliminó la memoización del nombre de la colección y del nombre de la base de datos para que las lambdas con
store_infuncionen correctamente al cambiar. -
#2911 El atributo
_destroyen las relaciones 1-n, al procesar atributos anidados, ahora puede ser una cadena o símbolo al recibir un arreglo. -
#2886 Se corrigió el problema de nombres asociados con los generadores de Rails.
-
#2885 Toque fijo para campos con alias. (Niels Ganser)
-
#2883 Permitir que las relaciones cíclicas no generen errores de relación mixta.
-
#2867
pluckahora gestiona correctamente los campos con alias. -
#2862 El guardado automático ya no realiza queries extra innecesarias. (Arthur Neves)
3.1.2
Problemas resueltos
-
#2851 Se corrigió la desmongoización de valores NaN de BigDecimal. (nkem)
-
#2848 Solucionado
touchpara funcionar al usar sellos de tiempo cortos. (Arthur Neves) -
#2840 Se ha corregido la gestión de opciones de
no_timeoutde extremo a extremo. -
#2826 Los campos dinámicos ahora están mongoizados correctamente.
-
#2822 La carga Marshal de relaciones ahora vuelve a aplicar correctamente las extensiones.
3.1.1
Problemas resueltos
-
#2839 Se corrigieron las validaciones para usar el valor convertido de tipo, con la excepción del validador de valor numérico. (Lailson Bandeira)
-
Las opciones de #2838
store_inahora se fusionan correctamente en lugar de sobrescribirse. (Colin MacKenzie)
3.1.0
Nuevas características:
-
El requisito mínimo de MongoDB ahora se ha elevado a 2.2, ya que ahora dependemos del marco de agregación.
-
Las dependencias mínimas de Active Model y Active soporte se han elevado a 3.2.
-
#2809 Las relaciones ahora pueden especificar una llave primaria para usar en lugar del ID en las claves externas.
class Person include Mongoid::Document field :username, type: String has_many :cats, primary_key: "username" end class Cat include Mongoid::Document belongs_to :person, primary_key: "username" end -
#2804 ahora se ha añadido soporte para $geoNear a los criterios.
Bar.where(:likes.gt => 1000).geo_near([ 52, 13 ]) Bar.geo_near([ 52, 13 ]).max_distance(0.5).spherical -
#2799 Criteria#map ahora puede aceptar un símbolo de un nombre de campo, así como un bloque, para realizar un
mapmás optimizado. (Gosha Arinich)Band.where(:likes.gt => 1000).map(:name) -
#2798 Las agregaciones (
sum,min,max,avg) ahora utilizan el marco de agregación en lugar de map/reduce. (Gosha Arinich) -
#2776 MongoDB 2.4.x ahora se admiten nuevos tipos de índices: "2dsphere", "text" y "encriptada". (Irakli Janiashvili)
-
#2767 soporte de $maxScan de Origin ahora es compatible. (Jonathan Hyman)
-
#2701 Limpiando queries excesivas y extra de la base de datos con relaciones 1-1.
-
#2693 Se pueden pasar nombres de colecciones personalizadas al generador de modelos. (Subhash Bhushan)
rails g model band --collection=artists -
#2688
Model.createyModel.create!ahora pueden tomar un arreglo de hashes de atributos para crear múltiples documentos a la vez. Si se proporciona un arreglo de atributos, se devuelve un arreglo de documentos.Band.create([{ name: "Tool" }, { name: "Placebo" }]) Band.create!([{ name: "Tool" }, { name: "Placebo" }]) -
#2670 Desconfigurar campos ahora acepta varios campos en lugar de solo 1. (Arthur Neves)
band.unset(:name, :founded) Band.where(name: "Placebo").unset(:members, :origin) -
#2669 Pasar un bloque a
Criteria#newahora lo envía correctamente al constructor del modelo. (Arthur Neves) -
#2667
exists?ya no accede a la base de datos en los casos en que tenemos la información necesaria en la memoria. -
#2665 Mongoid ahora admite un contador de caché para las relaciones de
belongs_to. (Arthur Neves)class Band include Mongoid::Document belongs_to :label, counter_cache: "b_count" end class Album include Mongoid::Document belongs_to :band, counter_cache: true end -
#2662 Los documentos incrustados que tienen relaciones de
belongs_toahora pueden cargarlos anticipadamente. -
Se han añadido métodos prácticos getter y setter para Logger #2657 en el módulo
Config. (Arthur Neves) -
#2615 Ahora las opciones de índice pueden tomar un nombre de base de datos específico si los índices solo deben existir en una base de datos distinta de la por defecto.
class Band include Mongoid::Document index name: 1, { database: "another_db" } end -
#2613 Los Procs ahora se pueden proporcionar como valores para
store_in:class Band include Mongoid::Document store_in database: ->{ Thread.current[:database] } end -
#2609 Transmitir la opción batch_size a la query. (Martin Mauch)
-
#2555 ahora pasar hashes a
findcuando el id de los documentos es de tipo hash funciona correctamente. (Szymon Kurcab) -
#2545 El operador posicional
$se usa para selectores de actualizar en documentos incrustados que están anidados a una profundidad de 1 niveles, cuando sea apropiado. -
#2539
Mongoid.modelsahora rastrea todos los modelos en la aplicación para determinar con mayor precisión los modelos en tareas como la indexación y las tareas de rastrillo. (Ara Howard) -
#2525 Se añadió la capacidad de tener campos cortos con marcas de tiempo y alias. Esta configura los campos de marca de tiempo como
c_atyu_at, que también se sub-alias comocreated_atyupdated_atpara mayor comodidad. (Rodrigo Saito)class Band include Mongoid::Document include Mongoid::Timestamps::Short # For c_at and u_at. end class Band include Mongoid::Document include Mongoid::Timestamps::Created::Short # For c_at only. end class Band include Mongoid::Document include Mongoid::Timestamps::Updated::Short # For u_at only. end -
Los documentos de #2465 ahora tienen un
attribute_before_type_castpara el manejo adecuado de las validaciones. (Gerad Suyderhoud) -
#2443
expire_after_secondsahora es una opción de índice válida (https://www.mongodb.com/es/docs/manual/core/indexes/#ttl-indexes, https://www.mongodb.com/es/docs/manual/tutorial/expire-data/).class Event include Mongoid::Document field :created_at, type: DateTime index({ created_at: 1 }, { expire_after_seconds: 3600 }) end -
#2373 Las relaciones con la opción
touch: trueahora se actualizarán automáticamente cuando se cree o elimine el documento secundario. -
Añadido
Document.first_or_create!yCriteria#first_or_create!. Esto genera un error de validación si la creación no supera la validación.Band.where(name: "Depeche Mode").first_or_create! Band.where(name: "Tool").first_or_create!(active: true) -
Se añadieron
Document.first_or_initializeyCriteria#first_or_initialize. Esto es lo mismo quefirst_or_create, pero inicializa un nuevo documento (no persistido) si no se encuentra ninguno.Band.where(name: "Depeche Mode").first_or_initialize Band.where(name: "Tool").first_or_initialize(active: true) -
Se añadió
Model.pluckyCriteria#pluck, similar a Active Record, que devuelve un arreglo de valores para el campo proporcionado. (Jason Lee)Band.where(name: "Depeche Mode").pluck(:_id) Band.where(name: "Tool").pluck(:likes) -
#2324 Las inserciones de muchas relaciones ahora gestionan correctamente
delete_if. -
#2317 Agregado
Document.first_or_createyCriteria#first_or_create. Esto devolverá el primer documento coincidente o creará uno con atributos adicionales si no existe. (incorvia)Band.where(name: "Depeche Mode").first_or_create Band.where(name: "Tool").first_or_create(active: true) -
#2292 Se añadió
Model.each_with_index. -
#2285
Config.load_configurationnow is public for those who wish to instantiate settings directly from a hash. -
#2275 Se añadió la tarea rake
db:mongoid:purgeque descartará todas las colecciones con excepción de las colecciones del sistema en la base de datos por defecto. -
Se han añadido #2257
after_finddevoluciones de llamada para cuando los documentos se devuelvan de la base de datos.class Band include Mongoid::Document after_find do |doc| # Some logic here. end end -
#2223 Permitir encontrar documentos con JavaScript usando parámetros que están protegidos contra la inyección de JavaScript mediante
Model.for_js.Band.for_js("this.name = param", param: "Tool") Band.where(:likes.gt => 1000).for_js("this.likes < this.follows") -
#2197 Cuando se proporciona la configuración de sesión sin puertos, Mongoid ahora los establecerá por defecto en 27017.
-
#2180 Las relaciones de 1-n y n-n ahora soportan funciones de retorno antes/después de agregar/remover. (Rodrigo Saito)
class Band include Mongoid::Document :albums, after_add: :notify_labels has_many :followers, before_remove: ->(band, follower){ notify_unfollow(follower) } end -
#2157
Criteria#updateyCriteria#update_allahora serializan valores de acuerdo a su tipo de campo, si se define un campo. -
#2022 Los callbacks personalizados ahora pueden registrarse para su uso con observers usando la macro
observable.class Band include Mongoid::Document define_model_callbacks :notification observable :notification end class BandObserver < Mongoid::Observer def before_notification(band) #... end def after_notification(band) #... end end -
#1766 Las relaciones de muchos a muchos no tocarán la base de datos si la clave foránea es un arreglo vacío.
-
#1564 Las claves externas de muchos a muchos ahora tienen un conjunto por defecto de manera perezosa sólo si se ha accedido a la relación. Esto evita almacenar arreglos vacíos si la relación no ha sido modificada.
Problemas resueltos
-
#2730 Llamar a la función de ordenación en un contexto actualiza correctamente los criterios del contexto. (Arthur Neves)
-
#2719
distinctya está disponible a nivel de clase.Band.distinct(:name) -
#2714 Al anular sesiones cuando la nueva sesión tiene una base de datos diferente, también se cambiará correctamente la base de datos en tiempo de ejecución.
-
Arreglo de carga anticipada #2697 al incluir varios modelos que heredan de la misma clase. (Kirill Lazarev)
-
#2664 La clasificación en memoria de documentos incrustados ahora funciona de manera adecuada cuando se proporcionan varios campos. (Neer Friedman)
3.0.24
Problemas resueltos
- La función #2879
remove_attributeen los documentos nuevos ya no crea una operación $unset innecesaria.
3.0.23
Problemas resueltos
-
#2851 Se corrigió la desmongoización de valores NaN de BigDecimal. (nkem)
-
#2841 Llamar a
delete_allodestroy_allsobre un embeds many cuando se está en medio de una actualización principal ahora ejecutará correctamente la eliminación. (Arthur Neves) -
#2835 Se corrigió el borrado de opciones de persistencia en el validador de unicidad.
-
#2826 Los campos dinámicos ahora están mongoizados correctamente.
-
#2822 La carga Marshal de relaciones ahora vuelve a aplicar correctamente las extensiones.
-
#2821 Las relaciones autoguardadas deberían duplicarse en las clases heredadas.
3.0.22
Problemas resueltos
-
#2812 Se corrigieron los criterios en las relaciones muchos a muchos cuando el documento base se destruye y la clave foránea aún no se ha evaluado de forma diferida.
-
#2796 No propague cambios en relaciones has_many al asignar con un borrado.
-
#2795 Corregir la precisión en las conversiones de horas. (Tom de Bruijn)
-
#2794 No realizar la construcción automática al leer una relación para validación.
-
#2790
becomesahora copia documentos incrustados incluso si estaban protegidos por asignación masiva. -
#2787 Permitir
becomespara reemplazar el documento en el mapa de identidad. -
#2786 Se corrigió el error en las devoluciones de llamada en cascada al destruir que no se activaban correctamente.
-
#2784 Se corrigió la validación de unicidad que se estaba agregando correctamente a las subclases. (Takeshi Akima)
3.0.21
Problemas resueltos
- #2781 / * #2777 - Se solucionó un problema con la serialización de
DateTimeque solo estaba presente en entornos Rails.
3.0.20
Problemas resueltos
-
#2774 Asegúrese de que los macros de validación para unicidad, presencia y asociación también estén disponibles a nivel de instancia.
-
#2772 Los campos localizados ahora se gestionan correctamente al clonar un documento.
-
#2758
Mongoid.create_indexesno falla cuando no puede convertir en constante una clase. (Arthur Neves) -
No se borran más las opciones de persistencia #2743 cuando se cargan las revisiones. (Arthur Neves)
-
#2741 Corrige errores de redondeo de microsegundos en el mongoization de tiempo en MRI y JRuby.
-
#2740 Admitir claves enteras en los campos de hash al utilizar
read_attributecon notación de puntos. -
#2739 Asegurarse de que la deserialización de enteros se realice correctamente a enteros.
-
#2733 Las relaciones de muchos a muchos con
inverse_of: nilno persisten la relación inversa en<<opushsi el documento ya está persistido. -
#2705 Lógica corregida sobre cuándo se pueden añadir niños a la lista de devoluciones de llamada en cascada.
3.0.19
Problemas resueltos
- Se ha lanzado para revertir los cambios en #2703.
3.0.18
Problemas resueltos
-
#2707 Llamar a
find_or_create_byofind_by_initialize_bypara terminar una relación con un criterio o alcance en cadena ahora mantiene adecuadamente las relaciones intactas en el documento nuevo o encontrado. -
#2699 Restablecer un campo ahora remueve el nombre de la lista de atributos modificados. (Subhash Bhushan)
-
Los campos con alias de2683 ahora están soportados al ejecutar operaciones atómicas a partir de criterios. (Arthur Neves)
-
La llamada de #2678 a
Criteria#sumsin documentos coincidentes devuelve0en lugar denil. -
Los2671 comparadores ahora gestionan correctamente las claves de símbolos. (Jonathan Hyman)
3.0.17
Problemas resueltos
- #2686 Se corrigió la dependencia rota de Moped: la versión de Moped ahora debe ser al menos la 1.2.0.
3.0.16
Problemas resueltos
-
#2661 Implementar
model_namea nivel de instancia para documentos. -
#2651 Asegúrese de que
Criteria#typefuncione correctamente tanto con claves de símbolo como de string en el selector. -
#2647 Garantiza que
deleted?ydestroyed?sobre documentos paranoicos retornen el mismo valor. -
#2646 Configure el documento descargado en memoria en los destinos enumerables antes de ceder al bloque.
-
#2645 Tenga en cuenta el almacenamiento en caché al solicitar recuentos. (Arthur Nogueira Neves)
-
#2642 No agrupe los envíos de arreglos vacíos en documentos incrustados. (Laszlo Bacsi)
-
#2639 Evita consultas extras innecesarias en registros nuevos al construir relaciones a partir de ellos.
-
#2638 Cuando un criterio está realizando una carga ansiosa, al llamar a
firstolasty luego iterar sobre todos los resultados, se carga ansiosamente la solicitud completa de forma adecuada. -
#2618 La validación de unicidad ahora utiliza siempre la coherencia de strings por defecto.
-
#2564 Se corrigió la recursión infinita para los casos en los que se sobrescribía un getter de relación y se llamaba al setter desde ese método.
-
#2554 Asegúrese de que
unscopeden unaembeds_manyno incluya documentos señalados para destrucción.
3.0.15
Problemas resueltos
-
#2630 Corregir la cascada cuando los metadatos existen pero no se ha definido la cascada.
-
#2625 Repare
Marshal.dumpyMarshal.loadde los objetos proxies y criterios. -
#2619 Se corrigieron las clases devueltas por
observed_classesen un observador cuando observa modelos personalizados. -
Los errores #2612
DocumentNotFoundahora exponen la clase en la instancia del error. -
#2610 Asegúrese de llamar a
firstdespués de unlastque tenía opciones de clasificación para restablecer el orden. -
#2604 Chequea los pulls y pushes para detectar actualizaciones en conflicto. (Lucas Souza)
-
#2600 Instancie el tipo de clase correcto para los atributos al utilizar atributos de múltiples parámetros. (xxoscilacioxx)
-
#2598 Se corrigió la clasificación en campos localizados con Docs incrustados.
-
#2588 Bloque que define los métodos para los atributos dinámicos que serían métodos de ruby no válidos. (Matt Sanford)
-
#2587 Arreglar conflicto de método con los proxies de
belongs_toal restablecer los criterios no cargados de relaciones. -
#2585 Asegúrate de que las opciones de configuración de la sesión se pasen a Moped como símbolos.
-
#2584 Permitir que map/reduce opere en secundarios si la salida está configurada en
inline. -
#2582 Asegúrate de que la anulación de sesión
nilnunca pueda causar el acceso a una sesión con el nombrenil. -
2581 Usa coherencia fuerte al recargar documentos. (Mark Kremer)
3.0.14
Problemas resueltos
-
#2575 Prevenir que los horarios de fin de mes se redondeen hacia arriba, ya que los números flotantes no son lo suficientemente precisos para gestionar microsegundos. (Steve Valaitis)
-
#2573 No usar i18n para mensajes de inspección.
-
#2571 Remover mensaje de error en blanco de las localizaciones. (Jordan Elver)
-
#2568 Corrige la validación de unicidad para los campos localizados cuando también se proporciona un alcance.
-
#2552 Garantiza que se generen errores
InvalidPathal intentar obtener rutas desde un selector raíz en documentos incrustados.
3.0.13
Problemas resueltos
- #2548 Corregir error al generar el archivo de configuración con una nueva aplicación con Unicorn en el gemset.
3.0.12
Problemas resueltos
-
#2542 Permitir que los documentos incrustados que utilicen
store_asse distingan de manera adecuada en los criterios. -
#2541 Asegúrese de que el cambio de tipo sea correcto al subir/bajar de tipo un documento a través de
Document#becomes(Łukasz Bandzarewicz) -
#2529 Los campos en subclases que anulan campos en el padre donde ambos tienen valores predeterminados con procs ahora anulan adecuadamente el valor predeterminado en la subclase.
-
#2528 Los campos con alias deben duplicarse cuando se heredan subclases.
-
#2527 Garantiza que la eliminación de Docs en un
has_manyrealice una actualizar múltiple al establecerlo en un arreglo vacío.
3.0.11
Problemas resueltos
-
#2522 Se corrigió
Criteria#withpara devolver los criterios y no la clase. -
#2518 Corregir la llamada de unidad de trabajo para el mapa de identidad cuando se utiliza Passenger.
-
#2512 Asegúrese de que la destrucción de atributos anidados funcione con las destrucciones retrasadas introducidas en 3.0.10 cuando hay varios niveles de profundidad.
-
#2509 No aplique un mapeo de identidad extra cuando el valor devuelto sea un hash vacío. (Douwe Maan)
3.0.10
Problemas resueltos
-
#2507 Asegúrese de que no haya golpes extra a la base de datos (db hits) cuando la carga ansiosa (eager loading) tenga una combinación de padres con y sin docs. (Douwe Maan)
-
#2505 Asegúrate de que
updateyupdate_allentre los criterios gestionen adecuadamente los campos con alias. (Dmitry Krasnoukhov) -
#2504
Model#becomesmantiene correctamente la misma ID. -
#2498 Los criterios ahora pasan correctamente los bloques proporcionados a través de
method_missing. -
#2496 Los documentos incrustados que se almacenaron anteriormente sin identificadores ahora se actualizan correctamente y se les asignan identificadores desde dentro de Mongoid.
-
#2494 Todas las operaciones atómicas explícitas ahora respetan correctamente los campos con alias.
-
#2493 Usa
Class#nameen lugar deClass#model_namecuando configures tipos polimórficos en caso de quemodel_namehaya sido anulado. -
#2491 Se eliminó la llamada de fusión innecesaria en hijos en cascada.
-
#2485 Remover índices ahora siempre utiliza coherencia fuerte.
-
#2483 La administración de versiones ahora gestiona los campos localizados. (Lawrence Curtis)
-
Los parámetros para la búsqueda del almacenar #2482 se encuentran en el error
DocumentNotFound. -
#2481 Las agregaciones de map-reduce ahora gestionan adecuadamente el agrupamiento de tareas de reducción en Mongo en lotes de 100, con el estado transmitido junto con el conteo.
-
#2476 Gestiona el salto y el límite fuera del rango en las relaciones embeds_many con delicadeza.
-
#2474 Desvincula correctamente las relaciones 1-1 cuando el hijo aún no está cargado. (Kostyantyn Stepanyuk)
-
#2451
relation.deleteden documentos paranoicos integrados ahora funciona correctamente otra vez. -
#2472 Asegúrese de que
update_allen relaciones embebidas funciona correctamente cuando en realidad no se va a actualizar nada. -
#2469 Los documentos anulados sobre relaciones ahora pueden volver a agregarse con la misma instancia en memoria.
-
2454
Model#as_documentpermite correctamente cambios respecto a tener una relación y la eliminación de la relación. (James Almond) -
#2445 El middleware Mongoid ahora admite correctamente tanto las respuestas normales como las transmitidas y borra correctamente el mapa de identidad para ambos.
-
#2367 Los documentos incrustados que deben borrarse mediante atributos anidados ya no se eliminan inmediatamente de la relación en caso de que la validación principal falle. En su lugar, se marcan para su destrucción y luego la eliminación se produce una vez que el padre pasa la validación y va a persistir.
Ten en cuenta que este es un cambio de comportamiento, pero como la API no cambia y el comportamiento anterior era incorrecto y no coincidía con AR, se pudo incluir en una versión puntual.
3.0.9
Problemas resueltos
-
#2463 Se ha corregido el error en
rails g mongoid:configdesde un nuevo repositorio. -
#2456 La caché de descendientes ahora se restablece cuando se vuelve a heredar el documento. (Kostyantyn Stepanyuk)
-
#2453
Model#write_attributeahora funcionan correctamente con campos con alias. (Campbell Allen) -
#2444 Se eliminó la creación adicional de métodos sucios. (Kostyantyn Stepanyuk)
-
#2440/#2435 Pasa las opciones de asignación masiva a los hijos al establecer mediante atributos anidados o documentos incrustados.
-
#2439 Se corrigió una fuga de memoria en la selección por hilos de los campos devueltos. (Tim Olsen)
-
mongoid/moped#82 Los campos con alias ahora funcionan con
Criteria#distinct. -
#2423 Se corrigió el
update_alldel documento incrustado para realizar el $set correcto cuando se utiliza con un criterio. -
Las definiciones de índice de #2414 ahora respetan los campos con alias.
-
#2413 Los objetivos enumerables ahora devuelven correctamente enumeradores cuando no se proporcionan bloques. (Andrew Smith)
-
Los campos de BigDecimal #2411 se almacenan correctamente como cadenas al convertir enteros y números decimales flotantes a formato Mongo.
-
#2409 No avisar sobre la falta de mongoid.yml si se ha configurado por programación.
-
#2403 Devuelve falso en
update_allde una relación de embebidos muchos sin ningún documento. -
#2401 traer de vuelta la capacidad de fusionar un criterio con un hash.
-
#2399 Rechazar valores en blanco de id en has_many
Model#object_ids=. (Tiago Rafael Godinho) -
#2393 Garantiza que se respete
inverse_ofal utilizar relaciones polimórficas. -
#2388 Map/reduce utiliza de manera adecuada
sorten lugar deorderbyen la ejecución del comando. (Alex Tsibulya) -
#2386 Permitir parámetros geo haystack y bits en los índices. (Bradley Rees)
-
#2380
Model#becomesahora copia correctamente los atributos sucios. -
#2331 No double el envío de documentos secundarios cuando se realicen guardados extra en una función de retorno after_create.
3.0.8 (eliminado)
3.0.6
Problemas resueltos
-
#2375 El alcance de la validación de unicidad ahora funciona con campos con alias.
-
#2372 Asegúrese de que todas las operaciones atómicas conviertan valores a formato Mongo antes de la ejecución.
-
Ahora, los documentos paranoicos #2370 no se borran correctamente al usar
dependent: :restricty se produce una excepción. -
#2365 No hacer nada al intentar reemplazar un embeds_one con el mismo documento.
-
#2362 No almacene valores inversos de los campos en la base de datos cuando no sean necesarios. (Cuando no hay más de un padre polimórfico definido en la misma clase).
-
#2360 Al clonar documentos se deben ignorar las reglas de protección de asignación masiva.
-
#2356 Cuando se limitan los campos devueltos en las consultas mediante
only, asegúrese de que la limitación esté en el ámbito del modelo. -
#2353 Permitir que
update_attributegestione adecuadamente los campos con alias. -
#2348 La conversión de string a tiempos debe generar un error de argumento si la string no es válida. (Campbell Allen)
-
#2346 Asegúrese de que las relaciones
belongs_tosean modificables cuando se pasen al proxy y no al documento. -
#2334 Se corrigió la agregación map/reduce cuando a veces los campos no existían. (James McKinney)
-
#2330 Se corrigió la inconsistencia de #size y #length en criterios cuando los documentos han sido iterados con un límite aplicado.
-
#2328 Asegúrate de que se aplique el orden en todos los criterios de relación si están definidos.
-
#2327 No ejecute callbacks desde el documento base si el documento no puede ejecutarlos.
-
#2318 Asegúrate de que la configuración de cualquier valor numérico en un campo Flotante lo establezca realmente como un flotante, incluso si el número proporcionado es un entero.
3.0.5
Problemas resueltos
-
#2313 Se arregló la deserialización de los campos
nilTimeWithZone. (nagachika) -
#2311
Document#changesya no devuelve valoresnilpara los campos arreglo y Hash que solo fueron accedidos y no cambiaron realmente. Regresión desde 2.4.x. -
#2310 Al configurar un duplicado de muchos a muchos de forma sucesiva en la memoria, ya no se borran los claves ajenas inversas.
-
#2309 Permitir que las relaciones de embeds_one se establezcan con hashes más allá del conjunto inicial.
-
#2308 Asegúrate de que los documentos recuperados mediante
#finden relacioneshas_manyyhas_and_belongs_to_manyse mantengan en memoria. -
#2304 Los ámbitos por defecto ahora se fusionan correctamente en vez de sobreescribirse cuando se define más de uno, según lo esperado con AR. (Kirill Maksimov)
-
#2300 Asegúrate de que al recargar se refresque el documento en el mapa de identidad.
-
#2298 Proteger contra relaciones de muchos a muchos que extraen un conjunto nulo de identificaciones. (Jonathan Hyman)
-
#2291 Operaciones táctiles fijas solo para actualizar la marca de tiempo y el campo opcional, sin importar cuáles sean los otros cambios en el documento.
-
#1091 Permitir que la validación de presencia pase si el valor es
false.
3.0.4
Problemas resueltos
-
#2280 Solucionar la sincronización de las relaciones de muchos a muchos cuando existe un ámbito de ordenación por defecto en cualquiera de los lados de la asociación.
-
#2278
Criteria#updateahora actualiza correctamente solo el primer documento coincidente, dondeCriteria#update_allactualizará todos los documentos coincidentes. (sin bandera vs. multi). -
#2274 Al cargar modelos, avisa si surge un error pero continúa el procesamiento.
-
#2272 No remueva los selectores ni las opciones al remover el ámbito por defecto para valores realmente nulos. También debe comprobar si la clave existe.
-
#2266 Los documentos paranoicos restaurados ya no están marcados como destruidos. (Mario Uher)
-
#2263 Garantizar que la conversión de claves externas de ID no objeto en relaciones muchos a muchos ocurra en el conjunto inicial, no en el momento de la validación.
3.0.3
Problemas resueltos
-
#2259 Garantizar que los documentos de subclases no puedan ser extraídos del mapa de identificación mediante un id de otro documento en la misma colección con un tipo padre o hermano.
-
#2254 las operaciones $inc ya no convierten todos los valores a coma flotante.
-
#2252 No se active el autoguardado cuando los callbacks previos no hayan finalizado.
-
#2248 Mejoró el rendimiento de
exists?en los criterios y relaciones. (Jonathan Hyman)
3.0.2
Problemas resueltos
-
#2244 Eliminar las advertencias de asignación masiva de ID en atributos anidados.
-
#2242 Corregir la carga anticipada para que no cargue todos los documentos al llamar a first o last.
-
#2241 Las operaciones de Map/reduce ahora siempre utilizan coherencia fuerte, ya que tienen el potencial de escribir en colecciones la mayoría de las veces.
-
12238 Asegúrese de que los campos de clave externa N-N estén marcados como redimensionables para evitar
nil->[]cambios al usar#onlyy al actualizar. -
#2236 Mantén la instancia del documento en la excepción de validaciones accesible a través de
documentorecord. -
#2234 Asegúrate de que las validaciones al guardar un documento con opciones personalizadas funcionen correctamente y que no se borren si la validación es exitosa.
-
#2224
Model#incahora acepta valoresBigDecimal. -
#2216 Asignación fija de metadatos en embeddings one relations al establecer varias veces seguidas.
-
#2212 Asegure que los errores se hayan resuelto después de guardar con
validate: falseen todas las situaciones. -
#2207 Al realizar una carga anticipada de id, la query debe duplicarse para evitar problemas de iteración múltiple y no obtener los campos requeridos.
-
#2204 Genera un error
InvalidIncludesal pasar argumentos aCriteria.includesque son inválidos (no relaciones, o más de 1 niveles). -
#2203 Map/Reduce ahora funciona correctamente en conjunto con
Model#with.Band. with(session: "secondary"). where(:likes.gt => 100). map_reduce(map, reduce). out(inline: 1) -
#2199 Autosave false ahora se respeta al agregar automáticamente la validación de presencia. (John Nishinaga)
3.0.1
Problemas resueltos
-
2191 Garantiza la visibilidad adecuada (privada) para los métodos de generación de mensajes de error.
-
#2187 Asegúrese de que todos los niveles de documentos anidados se serialicen en JSON.
-
#2184 Permitir que los nombres de relaciones que entren en conflicto con los métodos principales del núcleo de ruby pasen las comprobaciones de existencia.
-
#2181 Garantizar que los criterios
.firstse ordenen por identificadores ascendentemente, si no se proporcionan otros criterios de ordenación.
3.0.0
Nuevas características:
-
#2151 Cuando se solicitan metadatos antes de la persistencia, Mongoid ahora genera un error
Mongoid::Errors::NoMetadatasi los metadatos no están presentes. -
#2147
Model#becomesahora copia los documentos incrustados. -
Se ha introducido una nueva función de retorno:
upsert, que se ejecuta al llamar adocument.upsertya que Mongoid no sabe si el documento debe tratarse como nuevo o persistente. Con esto vienen las devoluciones de llamada del modelo:before_upsert after_upsert around_upsert -
#2080/#2087 Se puede sobrescribir globalmente la base de datos o sesión a la que Mongoid persiste en casos donde
Model#withno es una opción viable.Mongoid.override_database(:secondary) Mongoid.override_session(:secondary) Band.create(name: "Placebo") #=> Persists to secondary. band.albums.create #=> Persists to secondary. Note that this option is global and overrides for all models on the current thread. It is the developer's responsibility to remember to set this back to nil if you no longer want the override to happen. Mongoid.override_database(nil) Mongoid.override_session(nil) -
#1989 Los criterios
count,sizeylengthahora se comportan como Active Record con respecto al acceso a la base de datos.`Criteria#count` will always hit the database to get the count. `Criteria#length` and `Criteria#size` will hit the database once if the criteria has not been loaded, and subsequent calls will return the cached value. If the criteria has been iterated over or loaded, `length` and `size` will never hit the db. -
#1976 La carga anticipada ya no produce consultas cuando la consulta base devuelve cero resultados.
-
Model.find_byahora acepta un bloque y cederá al documento encontrado si no es nulo.Band.find_by(name: "Depeche Mode") do |band| band.likes = 100 end -
#1958/#1798 Documentos y
belongs_tolas relaciones ahora soportan acciones touch.class Band include Mongoid::Document include Mongoid::Timestamps::Updated belongs_to :label, touch: true end Update the document's updated_at timestamp to the current time. This will also update any touchable relation's timestamp as well. Band.first.touch Update a specific time field along with the updated_at. Band.first.touch(:founded) This fires no validations or callbacks. -
Mongoid ahora admite el comando $findAndModify de MongoDB.
Band.find_and_modify("$inc" => { likes: 1 }) Band.desc(:name).only(:name).find_and_modify( { "$inc" => { likes: 1 }}, new: true ) -
#1906 Mongoid recuperará documentos del mapa de identidad cuando se proporcionen múltiples ids para buscar. (Hans Hasselberg)
-
#1903 Mongoid genera un error si se proporciona una expresión de javascript en una cláusula where en una colección anidada. (Sebastien Azimi)
-
Las agregaciones ahora se adhieren tanto a una API de Mongoid como a sus contrapartes enumerables donde sea aplicable.
Band.min(:likes) Band.min do |a, b| a.likes <=> b.likes end Band.max(:likes) Band.max do |a, b| a.likes <=> b.likes end Note that when providing a field name and no block, a single numeric value will be returned, but when providing a block, a document will be returned which has the min/max value. This is since Ruby's Enumerable API dictates when providing a block, the matching element is returned. When providing a block, all documents will be loaded into memory. When providing a symbol, the execution is handled via map/reduce on the server. -
Ahora se proporciona un método de agregación "kitchen sink" para obtener todo en una sola llamada para un campo.
Band.aggregates(:likes) # => # { # "count" => 2.0, # "max" => 1000.0, # "min" => 500.0, # "sum" => 1500.0, # "avg" => 750.0 # } -
Ahora se proporciona un DSL fuera de la API de criterios para operaciones map/reduce como una conveniencia.
Band.where(name: "Tool").map_reduce(map, reduce).out(inline: 1) Band.map_reduce(map, reduce).out(replace: "coll-name") Band.map_reduce(map, reduce).out(inline: 1).finalize(finalize) -
Mongoid ahora usa Origin para su API de criterios. Consulta el repo de Origin y la documentación de la API para obtener la documentación.
-
#1861 Mongoid ahora lanza un error
AmbiguousRelationshipcuando no puede determinar el inverso de una relación y hay múltiples candidatos potenciales. (Hans Hasselberg) -
Ahora puedes realizar un explain directamente desde los criterios.
Band.where(name: "Depeche Mode").explain -
#1856 La inserción en relaciones de uno a muchos ahora se puede encadenar.
band.albums.push(undertow).push(aenima) -
En la versión #1842, MultiParameterAttributes ahora admite campos con alias. (Anton Orel)
-
#1833 Si se intenta guardar un documento incrustado sin definir un padre, Mongoid ahora generará una excepción
Mongoid::Errors::NoParent. -
Se ha añadido una forma agnóstica de ORM para obtener los nombres de los campos
class Band include Mongoid::Document field :name, type: String end Band.attribute_names -
#1831
find_or_create_byen relaciones ahora acepta opciones de tipado y asignación masiva. (Tatsuya Ono)class Band include Mongoid::Document :albums end band.albums.find_or_create_by({ name: "101" }, LP) -
#1818 Añadir la capacidad de elegir la clave donde se almacena tu
embeds_manyrelación. (Cyril Mougel)class User include Mongoid::Document field :name, type: String :prefs, class_name: "Preference", store_as: 'my_preferences' end user.prefs.build(value: "ok") user.save # document saves in MongoDB as: # { "name" => "foo", "my_preferences" => [{ "value" => "ok" }]} -
Ahora, #1806
Model.find_or_create_byyModel.find_or_initialize_bypueden tomar document como parámetros para relaciones belongs_to.person = Person.first Game.find_or_create_by(person: person) -
#1774 Las relaciones ahora tienen una opción :restrict para las relaciones dependientes, que generará un error al intentar borrar un elemento principal que aún tiene elementos secundarios. (Hans Hasselberg)
class Band include Mongoid::Document has_many :albums, dependent: :restrict end band = Band.first band.albums << Albums.first band.delete # Raises DeleteRestriction error. -
#1764 Añadir método para comprobar si campo difiere del valor por defecto.
class Band include Mongoid::Document field :name, type: String, default: "New" end band = Band.first band.name_changed_from_default? -
Se han actualizado los mensajes de error de campos inválidos de #1759 para mostrar la fuente y la ubicación del método original. El nuevo mensaje es:
Problem: Defining a field named 'crazy_method' is not allowed. Summary: Defining this field would override the method 'crazy_method', which would cause issues with expectations around the original method and cause extremely hard to debug issues. The original method was defined in: Object: MyModule File: /path/to/my/module.rb Line: 8 Resolution: Use Mongoid.destructive_fields to see what names are not allowed, and don't use these names. These include names that also conflict with core Ruby methods on Object, Module, Enumerable, or included gems that inject methods into these or Mongoid internals. -
#1753/#1649 Ahora se proporciona un establecedor y un obtenedor para tener muchas relaciones para establecer sus hijos. (Piotr Jakubowski)
class Album include Mongoid::Document has_many :engineers end class Engineer include Mongoid::Document belongs_to :album end album = Album.first engineer = Engineer.first album.engineer_ids = [ engineer.id ] album.engineer_ids # Returns the ids of the engineers. -
#1741 Mongoid ahora proporciona una tarea de rake para forzar la eliminación de índices en entornos donde Mongoid gestiona las definiciones de índices y la eliminación debe ser automatizada. (Hans Hasselberg)
rake db:force_remove_indexes rake db:mongoid:force_remove_indexes -
#1726
Mongoid.load!ahora acepta un segundo argumento opcional para el entorno a cargar. Esto tiene prioridad sobre cualquier variable de entorno que se establezca si se proporciona.Mongoid.load!("/path/to/mongoid.yml", :development) -
#1724 Mongoid ahora admite campos de expresiones regulares.
class Rule include Mongoid::Document field :pattern, type: Regexp, default: /[^abc]/ end -
#1714/#1706 Se ha mejorado el registro en la creación de índices. (Hans Hasselberg)
When an index is present on a root document model: Creating indexes on: Model for: name, dob. When an index is defined on an embedded model: Index ignored on: Address, please define in the root model. When no index is defined, nothing is logged, and if a bad index is defined an error is raised. -
#1710 En los casos en los que no se desea que Mongoid proteja automáticamente los atributos id y tipo, se puede configurar una opción para desactivarlo.
Mongoid.protect_sensitive_fields = false -
Las relaciones #1685 ahora tienen los métodos build_ y create_.
class Comment include Mongoid::Document belongs_to :user end comment = Comment.new comment.build_user # Build a new user object comment.create_user # Create a new user object -
#1684 Se generará un
Mongoid::Errors::InverseNotFoundal intentar establecer un hijo en una relación sin las definiciones adecuadas de inverse_of debido a que Mongoid no puede determinarlo.class Car include Mongoid::Document :engine, class_name: "Motor" end class Motor include Mongoid::Document :machine, class_name: "Car" end car = Car.new car.engine = Motor.new # raises an InverseNotFound error. -
#1680 Las relaciones polimórficas ahora utilizan claves
*_typeen las consultas de búsqueda.class User include Mongoid::Document has_many :comments, as: :commentable end class Comment include Mongoid::Document belongs_to :commentable, polymorphic: true end user = User.find(id) user.comments # Uses user.id and type "User" in the query. -
1677 Ya está disponible la compatibilidad con relaciones polimorfas separables de padre a la misma clase principal. Esto solo funciona si se configura del lado del padre para saber a qué relación pertenecen los hijos. (Douwe Maan)
class Face include Mongoid::Document has_one :left_eye, class_name: "Eye", as: :visible has_one :right_eye, class_name: "Eye", as: :visible end class Eye include Mongoid::Document belongs_to :visible, polymorphic: true end face = Face.new right_eye = Eye.new left_eye = Eye.new face.right_eye = right_eye face.left_eye = left_eye right_eye.visible = face # Will raise an error. -
#1650 objetos que responden a
to_criteriaahora se pueden fusionar con los objetos de criterios existentes.class Filter def to_criteria # return a Criteria object. end end criteria = Person.where(title: "Sir") criteria.merge(filter) -
#1635 Ahora todas las excepciones proporcionan errores más completos, incluyendo el problema que se produjo, un resumen detallado del motivo que lo originó y posibles soluciones. ejemplo:
(Mongoid::Errors::DocumentNotFound) Problem: Document not found for class Town with id(s) [BSON::ObjectId('4f35781b8ad54812e1000001')]. Summary: When calling Town.find with an id or array of ids, each parameter must match a document in the database or this error will be raised. Resolution: Search for an id that is in the database or set the Mongoid.raise_not_found_error configuration option to false, which will cause a nil to be returned instead of raising this error. -
Se agregó #1616
Model.find_byque toma un hash de argumentos para buscar en la base de datos. Si no se devuelve un solo documento, se produce un error de DocumentNotFound. (Piotr Jakubowski)Band.find_by(name: "Depeche Mode") -
#1606 Mongoid ahora habilita el autoguardado, similar a Active Record, al añadir un accepts_nested_attributes_for en una relación.
class Band include Mongoid::Document has_many :albums accepts_nested_attributes_for :albums # This enables the autosave. end -
#1477 Mongoid ahora protege automáticamente los atributos id y tipo contra la asignación masiva. Puedes anular esto (no recomendado) redefiniéndolos como accesibles.
class Band include Mongoid::Document attr_accessible :id, :_id, :_type end -
#1459 El mapa de identidad se puede desactivar ahora para la ejecución específica de código pasando opciones a la unidad de trabajo.
Mongoid.unit_of_work(disable: :all) do # Disables the identity map on all threads for the block. end Mongoid.unit_of_work(disable: :current) do # Disables the identity map on the current thread for the block. end Mongoid.unit_of_work do # Business as usual. end -
Ahora, las Asociaciones #1355 pueden tener opciones de seguridad proporcionadas en operaciones de persistencia de documentos únicos.
band.albums.with(safe: true).push(album) band.albums.with(safe: true).create(name: "Smiths") album.with(safe: true).create_producer(name: "Flood") -
#1348 Carga ansiosa ahora es compatible con relaciones Muchos a muchos.
-
#1292 Remover atributo ahora desmarca el atributo cuando se guarda el documento en lugar de ponerlo en nulo.
band = Band.find(id) band.remove_attribute(:label) # Uses $unset when the document is saved. -
Las sesiones de base de datos de #1291 Mongoid ahora se conectan de manera perezosa y son completamente seguras para subprocesos. Si se crea un nuevo hilo, entonces se creará una nueva sesión de base de datos para él.
-
#1291 Mongoid ahora admite cualquier número de conexiones de base de datos según lo definido en el archivo mongoid.yml. Por ejemplo, podrías tener una base de datos local de servidor único, un set de réplicas en varias zonas de disponibilidad y un clúster particionado, todo en el mismo entorno de aplicación. Mongoid puede conectarse a cualquier sesión en cualquier punto.
-
#1291 Mongoid ahora permite que persista en cualquier base de datos o colección que desee durante la ejecución, por query o por operación de persistencia, usando
with.Band.with(collection: "artists").create(name: "Depeche Mode") band.with(database: "secondary).save! Band.with(collection: "artists").where(name: "Depeche Mode") -
#1291 Ahora puedes configurar, por modelo, dónde se almacenan sus documentos con la macro
store_innueva y mejorada.class Band include Mongoid::Document store_in collection: "artists", database: "secondary", session: "replica" end This can be overridden, of course, at runtime via the `with` method. -
#1212 documentos incrustados ahora pueden ser extraídos de una relación con persistencia.
band.albums.pop # Pop 1 document and persist the removal. band.albums.pop(3) # Pop 3 documents and persist the removal. -
#1188 Las relaciones ahora tienen predicados de existencia para facilitar la comprobación de si la relación está vacía o no. (Andy Morris)
class Band include Mongoid::Document :albums :label end band = Band.new band.albums? band.has_albums? band.label? band.has_label? -
#1188 1-1 relaciones ahora tienen una opción :autobuild para indicar si la relación debe construirse automáticamente con atributos vacíos al acceder cuando la relación actualmente no existe. Funciona con embeds_one, embedded_in, has_one, belongs_to. (Andy Morris)
class Band include Mongoid::Document has_one :label, autobuild: true end band = Band.new band.label # Returns a new label with empty attributes. When using existence checks, autobuilding will not execute. band = Band.new band.label? # Returns false, does not autobuild on a check. band.has_label? # Returns false, does not autobuild on a check. -
#1081 Mongoid indexa tanto el id como el tipo como un índice compuesto al proporcionar
index: truea un belongs_to polimórfico.class Comment include Mongoid::Document # Indexes commentable_id and commentable_type as a compound index. belongs_to :commentable, polymorphic: true, index: true end -
#1053 Elevar un
Mongoid::Errors::UnknownAttributeen lugar de ningún método al intentar establecer un campo que no está definido y permitir campos dinámicos es falso. (Cyril Mougel)Mongoid.allow_dynamic_fields = false class Person include Mongoid::Document field :title, type: String end Person.new.age = 50 # raises the UnknownAttribute error. -
#772 Ahora se puede marcar los campos como solo lectura, permitiendo que sus valores se asignen únicamente cuando el documento sea nuevo.
class Band include Mongoid::Document field :name, type: String field :genre, type: String attr_readonly :name, :genre end Readonly values are ignored when attempting to set them on persisted documents, with the exception of update_attribute and remove_attribute, where errors will get raised. band = Band.create(name: "Depeche Mode") band.update_attribute(:name, "Smiths") # Raises ReadonlyAttribute error. band.remove_attribute(:name) # Raises ReadonlyAttribute error.
Cambios principales (incompatibles con versiones anteriores)
-
Las relaciones polimórficas no pueden tener IDs distintos de object ids. Esto se debe a que Mongoid no puede determinar de forma optimizada cómo almacenan sus ids las diferentes clases en el otro lado de la relación, pues potencialmente pueden ser todas distintas.
Esto no estaba permitido antes, pero en ninguna parte se decía explícitamente.
-
#2039 Al validar la presencia de una relación ahora se comprueba tanto la relación como el valor de la clave externa.
-
La sintaxis de indexación ha cambiado. El primer parámetro ahora es un hash de pares de nombre/dirección con un segundo hash opcional como parámetro para opciones adicionales.
Normal indexing with options, directions are either 1 or -1: class Band include Mongoid::Document field :name, type: String index({ name: 1 }, { unique: true, background: true }) end Geospacial indexing needs "2d" as its direction. class Venue include Mongoid::Document field :location, type: Array index location: "2d" end -
Se han renovado los campos serializables personalizados. Tu objeto ya no debe incluir
Mongoid::Fields::Serializable; en lugar de esto, solo necesita implementar los métodos 3:#mongoize,.demongoizey.evolve.`#mongoize` is an instance method that transforms your object into a mongo-friendly value. `.demongoize` is a class method, that can take some data from mongo and instantiate and object of your custom type. `.evolve` is a class method, that can take any object, and transform it for use in a `Mongoid::Criteria`. An example of an implementation of this for `Range`: class Range def mongoize { "min" => first, "max" => last } end class << self def demongoize(object) Range.new(object["min"], object["max"]) end def evolve(object) { "$gte" => object.first, "$lte" => object.last } end end end -
Document#changesya no es un hash con acceso indiferente. -
after_initializelas funciones de retorno ya no se transfieren a los hijos si la opción está activada. -
#1865
counten los contextos de memoria y mongo ahora se comportan exactamente igual que elcountde Ruby en enumerable y pueden tomar un objeto o un bloque. Esto está optimizado en el contexto de mongo para que no se cargue todo en la memoria, a excepción del paso de un bloque.Band.where(name: "Tool").count Band.where(name: "Tool").count(tool) # redundant. Band.where(name: "Tool") do |doc| doc.likes > 0 end Note that although the signatures are the same for both the memory and mongo contexts, it's recommended you only use the block syntax for the memory context since the embedded documents are already loaded into memory. Also note that passing a boolean to take skip and limit into account is no longer supported, as this is not necessarily a useful feature. -
Se ha eliminado la opción de configuración
autocreate_indexes. -
Model.defaultsya no existe. Puedes obtener todos los valores por defecto con una combinación deModel.pre_processed_defaultsyModel.post_processed_defaults.Band.pre_processed_defaults Band.post_processed_defaults -
Model.identityyModel.keyse han eliminado. Para los identificadores personalizados, los usuarios ahora deben sobrescribir el campo _id.When the default value is a proc, the default is applied *after* all other attributes are set. class Band include Mongoid::Document field :_id, type: String, default: ->{ name } end To have the default applied *before* other attributes, set `:pre_processed` to true. class Band include Mongoid::Document field :_id, type: String, pre_processed: true, default: ->{ BSON::ObjectId.new.to_s } end -
Las excepciones de aplicaciones personalizadas en varios idiomas se han eliminado, junto con la funcionalidad
Mongoid.add_language. -
Mongoid ya no es compatible con 1.8. Solo se admiten MRI 1.9.3 y superior, o JRuby 1.6 y superior en modo 1.9.
-
#1734 Al buscar documentos vía
Model.findcon múltiples id, Mongoid lanzará un error si no se encuentran todos los id y te informará cuáles faltan. Anteriormente, solo se generaba un error si no se devolvía nada. -
#1675 Al agregar la validación de presencia en una relación ahora se habilita el guardado automático. Esto es para garantizar que cuando se guarde un nuevo objeto principal con un nuevo hijo y se marque como válido, ambos sean persistidos para garantizar un estado correcto en la base de datos.
-
#1491 Asegura que las traducciones vacías devuelvan un hash vacío al acceder.
-
#1484
Model#has_attribute?ahora se comportan igual que Active Record. -
#1471 Mongoid ya no elimina ningún nivel de precisión en los tiempos.
-
1475 Por defecto, ahora se utiliza la zona horaria de active soporte en la serialización de tiempo si está definida.
-
#1342
Model.findymodel.relation.findahora solo admiten un solo ID o múltiples IDs. Se ha eliminado el primero/último/todos con un hash de condiciones. -
#1291 El archivo mongoid.yml ha sido completamente renovado y al actualizar las aplicaciones existentes, te encontrarás con algunos encantadores errores de configuración específicos de Mongoid. Puedes volver a generar un nuevo mongoid.yml mediante la tarea rake existente, que está comentada en un grado extremo para ayudarte con todas las posibilidades de configuración.
-
#1291 Se ha eliminado la opción de configuración
persist_in_safe_mode. Ahora debe especificar en el archivo mongoid.yml de una sesión de base de datos si debe persistir en modo seguro por defecto.production: sessions: default: database: my_app_prod hosts: - db.app.com:27018 - db.app.com:27019 options: consistency: :eventual safe: true -
Se han eliminado #1291
safelyyunsafely. Ahora, por favor, utilizawithpara proporcionar opciones de modo seguro en tiempo de ejecución.Band.with(safe: true).create band.with(safe: { w: 3 }).save! Band.with(safe: false).create! -
Los macros de relación #1270 se han cambiado para coincidir con sus equivalentes en AR: ahora solo existen :has_one, :has_many, :has_and_belongs_to_many y :belongs_to.
-
Se ha eliminado #1268
Model#new?, los desarrolladores ahora deben usar siempreModel#new_record?. -
#1182 Ya no se requiere una recarga para actualizar una relación después de establecer el valor del campo de clave externa para ella. Observe que esto se comporta exactamente como Active Record.
If the id is set, but the document for it has not been persisted, accessing the relation will return empty results. If the id is set and its document is persisted, accessing the relation will return the document. If the id is set, but the base document is not saved afterwards, then reloading will return the document to its original state. -
#1093 Las estrategias de serialización de campos han cambiado en arreglo, Hash, Integer y booleano para ser más consistentes y coincidir con AR cuando corresponda.
Serialization of arrays calls `Array.wrap(object)` Serialization of hashes calls `Hash[object]` (to_hash on the object) Serialization of integers always returns an int via `to_i` Serialization of booleans defaults to false instead of nil. -
#933
:field.sizese ha renombrado a:field.counten criterios para que $size no entre en conflicto con el método size de Symbol. -
#829/#797 El código de alcance de Mongoid se ha reescrito completamente y ahora coincide con la API de Active Record. Con este cambio incompatible hacia atrás, algunos métodos han sido eliminados o renombrados.
Criteria#as_conditions and Criteria#fuse no longer exist. Criteria#merge now only accepts another object that responds to `to_criteria`. Criteria#merge! now merges in another object without creating a new criteria object. Band.where(name: "Tool").merge!(criteria) Named scopes and default scopes no longer take hashes as parameters. From now on only criteria and procs wrapping criteria will be accepted, and an error will be raised if the arguments are incorrect. class Band include Mongoid::Document default_scope ->{ where(active: true) } scope :inactive, where(active: false) scope :invalid, where: { valid: false } # This will raise an error. end The 'named_scope' macro has been removed, from now on only use 'scope'. Model.unscoped now accepts a block which will not allow default scoping to be applied for any calls inside the block. Band.unscoped do Band.scoped.where(name: "Ministry") end Model.scoped now takes options that will be set directly on the criteria options hash. Band.scoped(skip: 10, limit: 20) -
#463
Document#upsertya no está como alias deDocument#savey ahora ejecuta realmente un comando de inserción de MongoDB cuando se invoca. Si estabas usando este método antes y deseas el mismo comportamiento, por favor cámbiate asave.band = Band.new(name: "Tool") band.upsert #=> Inserts the document in the database. band.name = "Placebo" band.upsert #=> Updates the existing document.
Problemas resueltos
-
#2166
Criteria#from_map_or_dbelimina la selección de tipo al cargar anticipadamente, ya que luego verificará si el tipo es correcto. -
#2129 Se corrigió la clasificación para todos los campos en relaciones de múltiples incrustaciones.
-
#2124 se corrigió el alcance por defecto y se borró el alcance en documentos paranoicos.
-
#2122 Permitir que los documentos incrustados ordenen en campos booleanos.
-
#2119 Permítase
Criteria#update_allaceptar operaciones atómicas y conjuntos normales. -
#2118 No quites ninguna precisión durante las conversiones de
DateTimeaTime. -
#2117 Asegurarse de que las relaciones "embeds one" tengan los callbacks ejecutados al usar atributos anidados.
-
#2110
Model#touchahora funciona correctamente en documentos incrustados. -
#2100 Permitir operaciones atómicas para que se ejecuten correctamente en documentos paranoicos que tengan un deleted_at establecido.
-
#2089 Permitir una separación adecuada de la mongoización y evolución con respecto a las claves foráneas.
-
#2088 Permitir que las búsquedas por ID de string se obtengan del mapa de identidad si los ID se almacenan como identificación de objetos.
-
#2085 Permitir la desmongoización de floats e ints a big decimals.
-
#2084 No encadenar si no existe metadatos.
-
#2078 Llamar a
Model#cloneoModel#dupahora configura correctamente los atributos como no guardados. -
#2070 Permitir que updated_at pueda ser reemplazado manualmente para nuevos documentos que también tengan un created_at.
-
#2041 No accedas varias veces a la base de datos tras una carga anticipada que no haya devuelto documentos.
-
#1997 Las devoluciones de llamada en cascada deberían poder detener la cadena de devoluciones de llamada al finalizar.
-
Ahora, #1972
added,loadedyunloadedpueden ser nombres de ámbito válidos en un documento que forma parte de una relación 1-n. -
#1952/#1950 El comportamiento de
#all_inen documentos incrustados ahora coincide correctamente con documentos raíz al pasar un arreglo vacío. (Hans Hasselberg) -
#1941/#1939
Model.find_byahora devuelve nil si el error no encontrado raise está establecido en falso. (Hans Hasselberg) -
#1859/#1860
Model#remove_attributeahora se desactiva correctamente en documentos incrustados. (Anton Onyshchenko) -
#1852 Asegúrese de que no haya recursividad infinita en las funciones de retorno en cascada. (Ara Howard)
-
#1823
Relation#includes?ahora funciona correctamente con el mapa de identidades activado. -
#1810
Model#changed?ya no retorna true cuando los campos hash y arreglo solo han sido accedidos. -
#1876/#1782 Permitir la notación de puntos en las consultas de los criterios de 'embeds many'. (Cyril Mougel)
-
#1745 Se corrigió el borrado por lotes para funcionar dentro de la configuración del atributo.
-
#1718 Asegurarse de la coherencia de #first/#last en las relaciones: ahora siempre coinciden con el primero/último en la base de datos, pero da preferencia al primero en memoria.
-
#1692/#1376
Model#updateattributesyModel#update_attributes!ahora aceptan opciones de asignación. (Hans Hasselberg) -
#1688/#1207 No se requiere espacio de nombres al proporcionar el nombre de clase en macros de relación dentro del espacio de nombres. (Hans Hasselberg)
-
#1665/#1672 Expande critérios complexos en selectores de critérios anidados, como #matches. (Hans Hasselberg)
-
#1335 No agregue criterios de ordenación Id a first/last si ya hay opciones de ordenación en el criterio.
-
#1321 Muchos objetivos enumerables referenciados ahora cuentan con respaldo hash, lo que previene duplicados de manera más eficiente.
-
#1135 Los DateTimes ahora obtienen correctamente las zonas horarias al deserializar.
-
#1031 Mongoid ahora serializa los valores en campos de arreglo a sus valores adecuados compatibles con Mongo cuando es posible.
-
#685 Intentar utilizar versionado con documentos incrustados ahora generará una alerta de error adecuada para que el desarrollador sepa que esto no está permitido.
2.6.0
Nuevas características:
- #2709 Se ha adaptado la funcionalidad
touchde Mongoid 3.
2.5.2
Problemas resueltos
- #2502 Clave de caché reparada para gestionar adecuadamente cuando el documento no incluye
Mongoid::Timestamps::Updated. (Arthur Nogueira Neves)
2.5.1
Problemas resueltos
-
#2492 Retroportar las mejoras de rendimiento y memoria con callbacks en cascada desde 3.0.0-estable.
-
#2464 Realizar un backport de la solución a los atributos anidados para mantener muchas relaciones en memoria al actualizar los atributos. (Chris Thompson)
2.5.0
Nuevas características:
- Esta es una versión para dar soporte a Mongo y BSON gems 1.7.0 y superiores, y resuelve los problemas que mantenían los 2.4.x series locked below 1.6.2
2.4.12
Problemas resueltos
-
#2178 Asegúrese de que se ejecuten los callbacks de destrucción tras el reemplazo de una relación de tipo embeds one.
-
#2169 Permitir que los guardados pasen cuando los documentos se destruyen después del guardado en una función de retorno.
-
La2144 validación de unicidad en los documentos paranoicos ahora tiene un alcance adecuado.
-
#2127 No desvincules a los padres de los documentos incrustados en la eliminación de atributos anidados.
2.4.11
Problemas resueltos
-
Esta versión impone un límite en la versión del driver de mongo en 1.6.2 debido a cambios en la API
Mongo::Connection.from_urique ya no permiten opciones de conexión válidas. -
#2040 Se ha corregido una interpolación incorrecta en la validación de la presencia de la localización.
-
#2038 Permitir que las relaciones inversas se determinen únicamente mediante claves externas si se definen en ambos lados, y no solo mediante una declaración inverse_of.
-
#2023 Permitir la serialización de tipos dinámicos que entran en conflicto con los métodos principales de Ruby para seguir siendo serializados.
-
La validación de presencia de #2008 debe consultar la base de datos para comprobar la validez si la relación en memoria está vacía.
-
#2006 Permitir excluir solo el campo _id después de ejecutar una llamada #only.
2.4.10
Problemas resueltos
-
#2003 No fallar en la generación de documentos cuando un documento incrustado se almacenó como nulo en la base de datos.
-
#1997 No borre Docs incrustados paranoicos a través de atributos anidados cuando una función de retorno before_destroy devuelve falso.
-
Ahora, #1994
dependent: :deletesólo accede a la base de datos una vez para relaciones de uno a muchos y de muchos a muchos, en lugar de acceder una vez por cada documento. -
#1987 No volver a insertar documentos en el mapa de identidad al cargar de manera anticipada dos veces dentro del mismo trabajo.
-
#1953 La validación de unicidad ahora funciona en campos localizados.
-
#1936 Permitir configurar documentos incrustados a n niveles con atomicidad sin modificaciones conflictivas cuando no se utilicen atributos anidados o los propios documentos en una llamada de actualización desde la matriz.
-
#1957/#1954 Asegúrete de que el nombre de la base de datos esté establecido con herencia. (Hans Hasselberg)
2.4.9
Problemas resueltos
-
#1943 Asegúrate de que la validación de la numericidad funcione correctamente para decimales grandes.
-
La validación de longitud #1938 ahora funciona con campos localizados.
-
#1936 Ya se gestionan correctamente los conflictos de "push" con otros "push".
-
#1933
Proxy#extenddebe delegar a través del objetivo, donde extender el proxy mismo ahora se gestiona a través deProxy#proxy_extend. -
#1930 Asegúrate de que los criterios complejos estén ampliados en todas las cláusulas where. (Hans Hasselberg)
-
#1928 La eliminación de documentos incrustados a través de atributos anidados ahora realiza un $pull con criterios de coincidencia por id en lugar de un $pullAll para cubrir todos los casos. Anteriormente, los valores por defecto añadidos recientemente a documentos que ya se habían guardado no podían ser borrados en este asunto dado que el documento no coincidía con lo que había en la base de datos.
-
#1924/#1917 Se solucionó el problema de enviar a relaciones embebidas con ámbitos predeterminados que no se aplican al nuevo documento. (Hans Hasselberg)
-
#1922/#1919 Soltar colecciones elimina la memorización de la colección interna envuelta, a fin de garantizar que, cuando se definan colecciones limitadas, siempre se vuelvan a crear como limitadas. (Hans Hasselberg)
-
La validación de unicidad #1916/#1913 ya no se ve afectada por el alcance por defecto. (Hans Hasselberg)
-
#1943 Asegúrate de que la validación de la numericidad funcione correctamente para decimales grandes.
2.4.8
Problemas resueltos
-
#1892 Cuando se produzca un error de operación no maestra, Mongoid debería reconectarse antes de reintentar la operación.
-
#1887 No hagas una cascada de funciones de retorno a los hijos que no tengan la función de retorno definida.
-
#1882 No expandas el criterio de ID duplicado en un $and con selecciones duplicadas.
-
#1878 Se corrigió que los valores de aplicación por defecto no se aplicaran en ciertas selecciones de
onlyowithouten la iteración, no solo enfirstylast. -
#1874 Se solucionó la constante proc de rechazar todo en blanco para gestionar los valores correctamente con un valor no en blanco para destruir. (Stefan Daschek)
-
#1869/#1868 Los conjuntos atómicos retrasados ahora usan la ruta atómica en lugar del nombre de los metadatos para solucionar problemas de incrustación de múltiples niveles. (Chris Micacchi proporcionó las especificaciones)
-
#1866 la publicación procesamiento de los por defecto (procs) debe aplicarse después de vincular el secundario en una relación.compilar.
2.4.7
Problemas resueltos
-
Asegúrate de que la recarga de los documentos incrustados conserve la referencia al principal.
-
#1837 Pase siempre las opciones de configuración de símbolos al controlador.
-
#1836 Asegúrate de que los conteos de relaciones detecten los documentos persistidos que no han tenido el vínculo de clave externa guardado.
-
#1820 Al destruir documentos incrustados en embeds_many también se debe eliminar el documento del _unscoped target subyacente y reindexar la relación.
-
#1814 No realizar cascade callbacks en after_initialize.
-
#1800 Ahora se filtran las opciones no válidas para la conexión a Mongo.
-
Se ha corregido la igualdad de casos de #1785 para gestionar adecuadamente las comprobaciones de instancia.
2.4.6
Problemas resueltos
-
#1772 Permitir omitir y limitar a convertir cadenas en enteros. (Jean Boussier)
-
#1767 Model#update_attributes acepta de nuevo las opciones de asignación masiva. (Hans Hasselberg)
-
#1762 Criterios#any_of ahora maneja correctamente los campos localizados.
-
#1758 Metadatos ahora devuelve self en las opciones para el soporte de bibliotecas externas.
-
#1757 Asegúrate de que la serialización convierte cualquier tipo de atributo al tipo definido por el campo.
-
#1756 Las opciones de hash serializables deben pasar a los Docs incrustados.
2.4.5
Problemas resueltos
-
#1751 El registrador de Mongoid ahora responde a level para la compatibilidad con la API de registro de Ruby.
-
#1744/#1750 La ordenación ahora funciona para campos localizados en documentos incrustados mediante la API de criterios. (Hans Hasselberg)
-
#1746 La validación de presencia ahora muestra qué localizaciones estaban vacías para los campos localizados. (Cyril Mougel)
-
#1727 Permitir que la notación por puntos en criterios incrustados funcione tanto en "embeds one" como en "embeds many". (Lyle Underwood)
-
#1723 Las funciones de retorno de inicialización deben propagarse por los descendientes sin necesidad de determinar si el descendiente ha cambiado.
-
#1715 Los hashes serializables ahora son coherentes en la inclusión de documentos incrustados por o después del guardado.
-
#1713 Arreglando las comprobaciones === al comparar una clase con una instancia de una subclase.
-
#1495 Las funciones de retorno ya no generan los errores 'super llamado fuera del método' en 1.8.7 rubíes.
2.4.4
Problemas resueltos
-
#1705 Permite cambiar el orden de las claves externas de muchos a muchos.
-
#1703 Actualizado ahora está versionado de nuevo. (Lucas Souza)
-
#1686 Establece los metadatos base en desvinculación y también en vinculación para relaciones de pertenencia.
-
#1681 Intentar crear índices para modelos sin namespaces si no existe el namespace para el subdirectorio.
-
#1676 Permite que la carga anticipada funcione como un ámbito por defecto.
-
#1665/#1672 Expande critérios complexos en selectores de critérios anidados, como #matches. (Hans Hasselberg)
-
#1668 Asegúrate de que el logger de Mongoid existe antes de llamar a warn. (Rémy Coutable)
-
#1661 Asegúrate de que la validación de unicidad funcione en los documentos clonados.
-
#1659 Borrar conjuntos atómicos retrasados al restablecer la misma relación incrustada.
-
#1656/#1657 No accedas a la base de datos para la validación de unicidad si TANTO el alcance como el atributo no han cambiado. (priyaaank)
-
#1205/#1642 Al limitar los campos devueltos de la base de datos mediante
Criteria#onlyyCriteria#withouty luego guardar el documento. Los valores por defecto ya no sobrescriben los campos excluidos.
2.4.3
Problemas resueltos
-
La serialización DateTime #1647 cuando ya está en UTC no convierte a la hora local.
-
#1641/#1639 Objetos Mongoid.observer.disable :all ahora se comporta como AR.
-
Los consumidores de actualización #1640 deben estar vinculados al nombre de la colección en la que persisten, no al nombre de la clase.
-
#1637/#1636 Los alcances ya no modifican los alcances de la clase principal al subclasificar. (Hans Hasselberg)
-
#1629 $all y $in criteria en las relaciones embedidas de muchos ahora gestionan adecuadamente las búsquedas por expresiones regulares y elementos de longitud variable. (Douwe Maan)
-
#1623/#1634 Los ámbitos por defecto ya no rompen Mongoid::Versioning. (Hans Hasselberg)
-
#1605 Arreglar la regresión de las respuestas de rescate, Rails 3.2
2.4.2
Problemas resueltos
-
El campo #1628 _type puede volver a incluirse en la serialización a Json o XML como una opción global con
include_type_for_serialization. (Román Shterenzon) -
#1627 La validación del formato ahora funciona correctamente con campos localizados. (Douwe Maan)
-
#1617 Los métodos proxy de relación ahora aparecen en la lista de campos prohibidos de Mongoid.
-
#1615 Permitir una única configuración de host y puerto para todas las ejecuciones de pruebas, que puede ser sobrescrita configurando las variables de entorno MONGOID_SPEC_HOST y MONGOID_SPEC_PORT.
-
#1610 Cuando se versionan documentos paranoicos y se establece el número máximo de versiones, se borran las versiones antiguas de la relación incrustada.
-
#1609 Permitir la reintento de conexión durante la iteración del cursor y todas las demás operaciones.
-
#1608 Protege contra errores de método al pasar ids en atributos anidados y los documentos no existen.
-
#1605 remover la advertencia de obsolescencia en las respuestas de rescate, Rails 3.2
-
#1602 Preservar la estructura de las consultas $and y $or al hacer conversiones de tipo.
-
#1600 La validación de unicidad ya no genera errores cuando se proporciona una relación.
-
#1599 Asegúrese de que los objetos enumerables produzcan primero lo que está en memoria al realizar #cada uno, y no siempre los no cargados primero.
-
#1597 Corrige la capacidad de cambiar el orden de los campos de arreglo con los mismos elementos.
-
#1590 Permitir la correcta serialización de valores booleanos en criterios donde el campo esté anidado dentro de un arreglo.
2.4.1
Problemas resueltos
-
#1593 Ahora, los arreglos en documentos incrustados se actualizan correctamente de forma atómica cuando se modifican desde la versión original.
-
#1592 No tragar las excepciones de la generación de índices en la tarea rake create_indexes.
-
#1589 Permitir la asignación de un arreglo vacío a HABTM cuando aún no se hayan cargado documentos en la memoria.
-
#1587 Cuando un valor anterior de un campo de arreglo era un nil explícito, ahora se puede restablecer atómicamente con nuevos valores.
-
#1585
Model#respond_to?ahora retorna verdadero para el setter cuando se permite campos dinámicos. -
#1582 Permita que se establezcan valores nil en arreglos.
-
#1580 Permite que los arreglos se puedan establecer en nil después de guardar, y no solo que estén vacíos.
-
#1579 No llames a #to_a en elementos de campo individuales configurados en un criterio.
-
#1576 No realices una consulta a la base de datos durante la validación de unicidad si el campo que está siendo validado no ha cambiado.
-
#1571 Los campos alias obtienen todos los métodos de atributos sucios y todos los getters y setters tanto para el nombre original como para el alias. (Hans Hasselberg)
-
#1568 Cambio al entorno de desarrollo con advertencia cuando no hay ningún entorno configurado.
-
#1565 Para campos y claves externas con nombres de Ruby o de base de datos no estándar, usar define_method en lugar de class_eval para crear los accessors y métodos dirty.
-
La clase de estrategia interna #1557 ya no entra en conflicto con los modelos.
-
#1551 Los documentos padre ahora devuelven
trueparaModel#changed?si solo los documentos hijos (incrustados) han cambiado. -
#1547 Restablecimiento de los hijos persistentes desde un guardado principal cuando una nueva espera hasta las funciones de retorno posteriores, reflejando la funcionalidad de actualización.
-
#1536 La carga anticipada ahora ocurre al ejecutar
firstolastsobre un criterio si se especifican inclusiones.
2.4.0
Nuevas características:
-
Ahora se pueden pasar rangos a los criterios #where para crear una $gte/$lte query por detrás de escena.
Person.where(dob: start_date...end_date) -
Ahora, los campos serializables personalizados pueden sobrescribir #selection para proporcionar serialización personalizada para criteria queries.
-
Ahora, #1544 Internals utiliza
Array.wrapen lugar deto_adonde sea posible. -
La validación de presencia de #1511 ahora es compatible con campos localizados. (Tiago Rafael Godinho)
-
#1506
Model.setahora aceptará valores falsos y nulos. (Marten Veldthuis) -
#1505
Model.delete_all/destroy_allahora aceptan un hash :conditions o directamente los atributos. -
#1504
Model.recursively_embeds_manyahora acepta una opción :cascade_callbacks. (Pavel Pravosud) -
#1496 Mongoid ahora convierte las cadenas en símbolos para los campos de símbolos que son guardados como cadenas por otra aplicación.
-
#1454, #900 Asociaciones ahora tienen una función de retorno
after_buildque se ejecuta después de que se llamen los métodos.buildobuild_. (Jeffrey Jones, Ryan Townsend) -
#1451 Los rangos ahora pueden ser cualquier valor de rango, no solo números. (aupajo)
-
La localización de #1448 ahora se usa al ordenar. (Hans Hasselberg)
-
#1422 Mongoid genera un error al cargar yaml si no se encuentra ningún entorno. (Tom Stuart)
-
#1413 $not no es compatible añadido a los métodos del símbolo de criterios. (Marc Weil)
-
#1403 Se agregó la opción de configuración
scope_overwrite_exceptionque por defecto es falsa para generar un error al definir un ámbito nombrado con el mismo nombre que un método existente. (Christoph Grabo) -
#1388
model.add_to_setahora permite añadir varios valores y realiza un $addToSet con $each internamente. (Christian Felder) -
#1387 Añadido
Model#cache_keypara su uso en la caché de Rails. (Seivan Heidari) -
#1380 Llamar a Model.find(id) ahora se convertirá correctamente de y hacia cualquier tipo según el tipo del campo _id.
-
#1363 Se agregaron medidas de contingencia y soporte por defecto a campos localizados, y se añadió la capacidad de obtener y establecer todas las traducciones simultáneamente.
-
Los campos alias de #1362 ahora se tipifican correctamente en los criterios.
-
#1337 Los campos de arreglo, incluidos los muchos HABTM y claves foráneas ahora tienen una comprobación de cambios más inteligente y ya no realizan un simple $set si el arreglo ha cambiado. Si solo se han añadido elementos al arreglo, se realiza un $pushAll. Si solo se han eliminado elementos, se realiza un $pullAll. Si se han producido tanto adiciones como eliminaciones, se realiza un $set para evitar modificaciones en conflicto.
Problemas resueltos
-
Llamar a
Document#as_documenten un documento congelado en Rubinius devuelve los atributos en lugar de nil. -
#1554 Se ha dividido la aplicación de los valores predeterminados en procesos/no procesos, donde los no procesos se ejecutan inmediatamente durante la instanciación y los procesos se ejecutan después de que se hayan establecido todos los demás valores.
-
#1553 Las combinaciones de agregar y remover valores de un arreglo utilizan un $set en el contenido actual del arreglo, no en los nuevos valores.
-
#1546 Los cambios sucios deben devolverse en un hash con acceso indiferente.
-
#1542 La carga inmediata ahora respeta las opciones (es decir, skip, limit) proporcionadas a los criterios al recuperar las asociaciones.
-
#1530 No dupliques los valores añadidos a los arreglos mediante el seguimiento de cambios si el arreglo es un campo de clave externa.
-
#1529 Llamar a
unscopeden asociaciones relacionales ahora funciona correctamente. -
#1524 Permitir el acceso a las relaciones en setters de campos sobreescritos al preestablecer valores por defecto de claves externas.
-
#1523 Permitir la desactivación de los observadores a través de
disable. (Jonas Schneider) -
#1522 Tarea fija de creación de índices rake para Rails 3.2. (Gray Manley)
-
#1517 Corregir los documentos Mongoid para que funcionen correctamente con stub_model de RSpec. (Tiago Rafael Godinho)
-
#1516 No dupliques muchos documentos relacionales al vincular.
-
#1515 Mongoid ya no intenta serializar los campos personalizados en criterios complejos por defecto.
-
#1503 La sustitución de relaciones múltiples ahora maneja cualquier tipo de combinación de Docs existentes y nuevos.
-
#1502 Los atributos anidados en documentos incrustados respetan si el hijo es paranoico.
-
#1497 Utiliza el mensaje proporcionado al fallar la validación de unicidad. (Justin Etheredge)
-
#1491 Devuelve nil cuando no se establece un valor por defecto en los campos localizados. (Tiago Rafael Godinho)
-
#1483 El módulo de envío incluye en tiempo de ejecución la adición de nuevos campos a un documento principal, además de que los campos se agregan a las subclases.
-
#1482 Al aplicar nuevas opciones de ordenación no se fusiona con los criterios encadenados previamente. (Gerad Suyderhoud)
-
#1481 Arregla la query inválida al acceder a relaciones de muchos a muchos antes de que se establezcan los valores por defecto.
-
#1480 Los tipos de campo serializado internos de Mongoid se renombraron a Internos para no entrar en conflicto con las clases principales de Ruby en los tipos serializables personalizados.
-
#1479 No dupliques IDs en relaciones de varios a varios al usar create o create!
-
#1469 Cuando extract_id retorna nil, saca el documento del mapa de identidad usando el selector de criterios.
-
#1467 Definir un campo llamado metadatos ahora genera correctamente un error de campo no válido.
-
#1463 Los consumidores de inserción de agrupar ahora están restringidos a la colección para evitar que los documentos se guarden en otras colecciones en funciones de retorno que se dirigen al lugar incorrecto.
-
#1462 La asignación de muchas relaciones a través de atributos anidados
*_attributes=no autoguarda la relación. -
#1461 Se corrigió la serialización de campos de clave foránea en criterios complejos para que no se escape todo el hash.
-
La versionización de #1458 ya no omite los campos que estaban protegidos contra la asignación masiva.
-
#1455, #1456 Al llamar a destroy en cualquier documento, ahora se marca temporalmente como marcado para destrucción hasta que la operación esté completa. (Nader Akhnoukh)
-
#1453
Model#to_keydebería devolver un valor cuando el documento sea destruido. -
#1449 Los nuevos documentos ya no se mantienen almacenados al reemplazarlos en una relación uno a uno como un efecto secundario. (jasonsydes)
-
¿#1439 incorporado? debería devolver true cuando la relación se defina como cíclica.
-
#1433 Los atributos anidados polimórficos para 1y1 actualizan correctamente.
-
#1426 Los documentos congelados ahora pueden clonarse. (agrawal2001)
-
#1382 Generar un error adecuado al crear índices mediante una tarea rake si la definición del índice es incorrecta. (Mathieu Ravaux)
-
#1381, #1371 El mapa de identidad ahora funciona correctamente con documentos heredados. (Paul Canavese)
-
#1370 Divida la concatenación en arreglos incrustados en su propio método para manejar el procesamiento por lotes debido a problemas de ejecución tras la ejecución de la función de retorno.
-
#1366 Los valores de arreglos y hashes ahora se copian en profundidad para el seguimiento de cambios.
-
#1359 Brinda la capacidad de no aplicar el alcance por defecto a todos los alcances nombrados mediante el uso de lambdas.
-
#1333 Se corrigieron errores con tipos personalizados que existen en namespaces. (Peter Gumeson)
-
#1259 Los valores por defecto se consideran alterados si difieren del estado de la base de datos.
-
#1255 Asegúrese de que los documentos incrustados respeten el alcance por defecto definido.
2.3.4
-
#1445 Prevenir documentos duplicados en el arreglo cargado en el enumerable de destino para las asociaciones relacionales.
-
#1442 Al usar los métodos create_ para relaciones uno a uno, ahora se invocan los métodos destructivos correspondientes al reemplazar un documento existente.
-
#1431 El contexto enumerable debería añadirse al arreglo cargado después del rendimiento, de modo que métodos como #any? que se interrumpen anticipadamente según el valor del bloque, no tengan falsamente documentos extra.
-
#1418 Los documentos que se cargan desde la base de datos con fines de revisión ya no se colocan en el mapa de identidad.
-
#1399 Permitir la conversión de cadenas a enteros en claves externas donde el id esté definido como entero.
-
#1397 No agregues criterios de orden por defecto al principio si la ordenación ya existe.
-
Se corrigió #1394 existe? para que funcione cuando el recuento sea mayor que 1. (Nick Hoffman)
-
#1392 Devolver 0 en funciones de agregación cuando el campo no existe.
-
#1391 La validación de unicidad ahora funciona correctamente en los documentos incrustados que utilizan la definición de llave primaria.
-
#1390 Cuando el campo _type es una clase en minúscula, usa camelize antes de constantizar.
-
#1383 Arreglar la conversión en la lectura para campos serializables que son subclases.
-
#1357 Los conjuntos atómicos en diferido con update_attributes en documentos incrustados a niveles múltiples ahora se persisten correctamente.
-
#1326 Asegúrese de que el documento base de HABTM guarde sus claves después de guardar un documento hijo recién generado.
-
#1301 No sobrescribas los metadatos base en embebidos en relaciones si ya están definidos.
-
#1221 HABTM con inverso nil vuelve a estar permitido en documentos incrustados.
-
#1208 No se debe persistir automáticamente los documentos secundarios mediante el modificador al establecer desde un objeto embedded_in.
-
#791 El documento raíz actualiza sus marcas de tiempo cuando solo se han modificado los documentos incrustados.
2.3.3
Problemas resueltos
-
#1386 Bajada la dependencia mongo/bson a 1.3
-
#1377 Arregla las funciones de agregación para gestionar adecuadamente los valores nil o indefinidos. (Maxime Garcia)
-
#1373 Advertir si un ámbito sobrescribe otro ámbito.
-
#1372 Nunca persistas al enlazar dentro de un atributo de lectura para validación.
-
#1364 Se corrigió la recarga de documentos con IDs que no son del tipo BSON ObjectID.
-
#1360 Se ha corregido el rendimiento de la instanciación del observador de Mongoid integrándose en los hooks de carga de Active Support, al estilo de AR.
-
#1358 Corregido el error de tipo en la sincronización de muchos a muchos cuando inverse_of está configurado en nil.
-
Ahora la función #1356 $in se puede encadenar a criterios no complejos en la misma clave sin errores.
-
#1350, #1351 Errores corregidos en las conversiones de string de comillas double y virgulilla al parametrizar claves.
-
#1349 Los documentos no deberían explotar al incluir Enumerable. (Jonas Nicklas)
2.3.2
Problemas resueltos
-
#1347 Se solucionan los matchers embebidos cuando se proporciona un valor hash que no tiene un modificador como clave.
-
#1346 Criterios de ordenación duplicados por defecto al llamar primero/último en un criterio.
-
#1343 Al no pasar argumentos a
Criteria#all_ofse devuelven todos los documentos. (Chris Leishman) -
#1339 Garantiza que las funciones de retorno de destrucción se ejecuten en los elementos hijos en cascada al borrarse a través de atributos anidados.
-
#1324 Configurar
inverse_of: nilen una relación muchos-a-muchos que hace referencia a la misma clase devuelve nil como clave externa inversa. -
#1323 Permite tanto cadenas de texto como símbolos como IDs en el arreglo de atributos para atributos anidados. (Michael Wood)
-
1312 Establecer un registros en la configuración ahora acepta cualquier cosa que se comporte como un registros.
-
#1297 No acceda a la base de datos al acceder a relaciones si la base es nueva.
-
#1239 Permitimos agregar relaciones referenciadas en bloques de creación, después de establecer el conjunto por defecto.
-
#1236 Asegúrate de que todos los modelos estén cargados en las tareas de rake, para que incluso en modo threadsafe se puedan crear todos los índices.
-
#736 Ahora llamar a #reload en documentos incrustados funciona correctamente.
2.3.1
Problemas resueltos
-
#1338 Llamar a #find en un alcance o relación verifica que el documento en el mapa de identidad realmente coincida con otros parámetros de alcance.
-
#1321 HABTM ya no permite entradas o claves duplicadas, en lugar de las inconsistencias anteriores.
-
#1320 Errores corregidos en el benchmark de rendimiento.
-
#1316 Se agregó una tarea separada de Rake "db:mongoid:drop" para que Mongoid y AR puedan coexistir. (Daniel Vartanov)
-
#1311 Arreglar el problema con la serialización de campos personalizados que heredan de hash.
-
#1310 En el sistema referenciado, el objetivo de muchos enumerables ya no duplica los documentos cargados y agregados cuando el mapa de identidad está habilitado.
-
#1295 Se corrigió que tener múltiples inclusiones solo ejecute la carga anticipada de la primera.
-
#1287 Se ha corregido la limitación máxima de versiones con la versionación.
-
#1277 attribute_will_change! marca correctamente el atributo incluso si no se produjo ningún cambio.
-
#1063 Los documentos Paranoid ejecutan correctamente las rutinas de destrucción al usar soft destroy.
-
#1061 Genera
Mongoid::Errors::InvalidTimecuando falla la serialización de tiempo. -
#1002 Comprueba los ID de bson legales al intentar convertir.
-
#920 Permitir que las relaciones sean nombradas objetivo.
-
#905 Devolver el nombre de clase normalizado en los metadatos si la cadena fue definida con un prefijo ::.
-
#861 accepts_nested_attributes_for ya no se requiere para establecer documentos incrustados mediante un hash o un arreglo de hashes directamente.
-
#857 Se corrigió el encadenamiento de relaciones dependientes cuando el documento base es paranoico.
-
#768 Definiciones de atributos de clase fijas en todo el módulo.
-
Los documentos incrustados #408 ahora pueden borrarse de forma suave mediante
Mongoid::Paranoia.
2.3.0
Nuevas características:
-
Mongoid ahora admite campos básicos localizados, almacenándolos como un hash de pares localización => valor.
field :name, localize: true -
#1275 Para las aplicaciones que establecen el modo seguro como verdadero por defecto, ahora se puede indicar a una sola operación que persista sin el modo seguro mediante #unsafely:
person.unsafely.save,Person.unsafely.create. (Matt Sanders) -
#1256 Mongoid ahora puede crear índices para modelos en motores de Rails. (Caio Filipini)
-
#1228 Permitir el preformateo de claves compuestas pasando un bloque a #key. (Ben Hundley)
-
Ahora se admite la asignación masiva con ámbito #1222. (Andrew Shaydurov)
-
#1196 Ahora se pueden desactivar las marcas de tiempo en cada llamada mediante el uso de #timeless:
person.timeless.save,Person.timeless.create(:title => "Sir"). -
#1103 Permitir que los desarrolladores creen sus propios criterios personalizados complejos. (Ryan Ong)
-
Mongoid ahora incluye todos los campos definidos en los resultados
serializable_hashyto_jsonincluso si los campos no tienen valores para que los documentos serializados sean más fáciles de usar para los clientes de ActiveResource. -
El soporte para el operador $and de MongoDB ahora está disponible en la forma de:
Criteria#all_of(*args)donde args es varias expresiones encriptadas. -
#1250, #1058 Los documentos incrustados ahora pueden activar sus funciones de retorno en una guardada principal al configurar
:cascade_callbacks => trueen la relación. (piromania, Paul Rosania, Jak Charlton)
Cambios importantes
-
Mongoid ahora depende de Active Model 3.1 y versiones posteriores.
-
Mongoid ahora depende de Mongo Ruby Driver 1.4 y superior.
-
Mongoid requiere MongoDB 2.0.0 y versiones superiores.
Problemas resueltos
-
#1308 Alcance fijo de búsquedas HABTM.
-
Los modelos con espacio de nombres #1300 deben gestionar correctamente la inclusión recursiva.
-
#1299 Los documentos autoreferenciados con control de versiones ya no fallan cuando inverse_of no está definido en todas las relaciones.
-
#1296 Se renombró el método de construcción interna a _building.
-
#1288, #1289 _id y updated_at no deben formar parte de los atributos versionados.
-
#1273 Mongoid.preload_models ahora verifica si está configurada la opción de configuración de precarga, donde Mongoid.load_models siempre carga todo. (Ryan McGeary)
-
Las relaciones #1244 Has ahora siguen el comportamiento dependiente por defecto.
-
#1225 se corrigió la persistencia retrasada de documentos incrustados mediante $set.
-
#1166 No cargues configuraciones en Railtie si no se están definiendo variables de entorno. (Terence Lee)
-
#1052
alias_attributeahora funciona nuevamente como se esperaba. -
#939 Aplicar atributos por defecto al realizar upcasting mediante #becomes. (Christos Pappas)
-
#932 Se corrigió la conversión de campos enteros con ceros iniciales.
-
#948 Restablecer el número de versión en el clon si existían versiones.
-
#763 No mezclar arreglos de criterios $in al encadenar ámbitos nombrados.
-
#730 Los modelos existentes a los que se les hayan añadido relaciones posteriormente a la persistencia de los originales, ahora pueden tener nuevas relaciones añadidas sin necesidad de migraciones.
-
#726 Los documentos incrustados con claves compuestas no validan la unicidad correctamente.
-
Las relaciones cíclicas no integradas ahora validan correctamente la unicidad en #582.
-
#484 Validar la Unicidad con Múltiples Alcances de Todos los Tipos Ahora Funciona Correctamente.
-
La eliminación de versiones creadas con
Mongoid::Versioningya no activa la dependencia de propagación en las relaciones.
2.2.5
- Esta fue una pequeña actualización para corregir 2.2.x Errores de Heroku durante la compilación de activos.
2.2.4
-
#1377 Arregla las funciones de agregación para gestionar adecuadamente los valores nil o indefinidos. (Maxime Garcia)
-
#1373 Advertir si un ámbito sobrescribe otro ámbito.
-
#1372 Nunca persistas al enlazar dentro de un atributo de lectura para validación.
-
#1358 Corregido el error de tipo en la sincronización de muchos a muchos cuando inverse_of está configurado en nil.
-
Ahora la función #1356 $in se puede encadenar a criterios no complejos en la misma clave sin errores.
-
#1350, #1351 Se corrigieron los errores en las conversiones de cadenas de comillas dobles y de la tilde ~ al parametrizar claves.
-
#1349 Los documentos no deberían explotar al incluir Enumerable. (Jonas Nicklas)
2.2.3
-
#1295 Se corrigió que tener múltiples inclusiones solo ejecute la carga anticipada de la primera.
-
#1225 se corrigió la persistencia retrasada de documentos incrustados mediante $set.
-
#1002 Corrigir la conversión de ID de objeto BSON para verificar si es legal primero.
2.2.2
- Esta versión elimina la restricción de la dependencia de la versión 1.3.x del controlador Mongo Ruby. Los usuarios ahora pueden usar 1.3.x a través de 1.4.x.
2.2.1
Problemas resueltos
-
#1210, #517 Permitir que las consultas de relaciones de documentos incrustados utilicen la notación de puntos. (Scott Ellard)
-
#1198 El destino Enumerable debe usar el recuento de criterios si cargado no tiene Docs.
-
#1164 Elimine los errores de memoria sin método restantes.
-
#1070 Permitir que los serializadores de campos personalizados tengan sus propios constructores.
-
#1176 Permitir el acceso a documentos principales desde Docs incrustados en 'after_destroy funciones de retorno'.
-
Los métodos del grupo de contexto #1191 (min, max, sum) ya no devuelven NaN, sino que devuelven nil si el campo no existe o no tiene valores.
-
#1193, #1271 Siempre devuelven enteros para campos enteros con .000 precisiones, no decimales flotantes.
-
#1199 Se corrigieron los problemas de rendimiento al acceder a campos hash y de arreglo al leer varias veces.
-
#1218 Se han corregido los problemas con las relaciones que referencian modelos con claves externas enteras.
-
#1219 Se corrigieron varios problemas de modificaciones conflictivas al enviar y recibir desde el mismo documento incrustado en una sola llamada.
-
Los metadatos #1220 no deben ser sobrescritos por nil en la vinculación.
-
#1231 Se renombró la clase de conjunto atómico de Mongoid como ‘Sets’ para evitar conflictos con el conjunto nativo de Ruby tras la inclusión de documentos.
-
#1232 Reparar el acceso a los modelos relacionados durante los callbacks de before_destroy al hacer cascada.
-
#1234 Se corrigieron los problemas de sincronización de claves foráneas de HABTM al destruir documentos.
-
#1243 Las relaciones polimórficas no se convierten en identificadores de objetos al consultar si los identificadores se han definido como cadenas.
-
#1247 Forzar Model.first a ordenar por id ascendente para garantizar el primer documento.
-
#1248 Añadido #desagrupado para relaciones embebidas de muchos a muchos.
-
#1249 Las banderas de destrucción en los atributos anidados ahora destruyen realmente el documento para has_many en lugar de solo romper la relación.
-
#1272 No modifiques las opciones de configuración en el momento de crear conexiones de set de réplicas.
2.2.0
Nuevas características:
-
Mongoid ahora contiene carga ansiosa en forma de
Criteria#includes(*args). Esto funciona en las asociaciones has_one, has_many, belongs_to y requiere que el mapa de identidad esté habilitado para poder funcionar. Colocaidentity_map_enabled: trueen tumongoid.yml. Ej:Person.where(title: "Sir").includes(:posts, :game) -
Las relaciones ahora pueden tomar un módulo como valor para la opción
:extend. (Roman Shterenzon) -
Las colecciones limitadas pueden crearse pasando las opciones a la macro
#store_in:Person.store_in :people, capped: true, max: 1000000 -
Mongoid::Collection ahora es compatible con
collection.find_and_modify -
Document#has_attribute?ahora es un alias deDocument#attribute_present? -
#930 Ahora puedes desactivar el registro de Mongoid a través del archivo mongoid.yml haciendo lo siguiente
logger: false -
#909 Ahora planteamos una excepción
Mongoid::Errors::Callbacksi se almacena de forma persistente con un método de exclamación y una función de retorno devuelve false, en lugar del error de validación poco informativo de antes.
Cambios importantes
-
Las relaciones has_many de #1173 ya no borran todos los documentos en un conjunto de la relación (= [ doc_one, doc_two ]), sino que recurren a la opción dependiente para determinar el comportamiento que debería ocurrir. :delete y :destroy se comportarán como antes, :nullify y ninguna opción especificada anularán ambos los documentos antiguos sin borrarlos.
-
#1142, #767 Las relaciones embebidas ya no se preservan inmediatamente de forma atómica cuando se accede a través de un conjunto de atributos primarios. Esto incluye la configuración de atributos anidados y
attributes=owrite_attributes. Luego, los cambios en el niño permanecen sucios y se actualizan automáticamente cuando se guarda en ellos o en el documento principal.
Problemas resueltos
-
#1190 Se solucionaron los errores de gemspec debido al cambio de README y CHANGELOG a markdown.
-
#1180, #1084, #955 Mongoid ahora verifica los tipos de campo en lugar de si el nombre contiene
/id/cuando intenta convertir a identificadores de objetos en los criterios. -
#1176 Los objetivos enumerables deben devolver siempre primero los documentos en memoria al llamar
#first -
#1175 Asegúrate de que ambos lados de relaciones de muchos a muchos estén sincronizados durante una creación.
-
#1172 Las relaciones enumerables referenciadas ahora gestionan correctamente
#to_json(Daniel Doubrovkine) -
#1040 Se ha mejorado el rendimiento del tiempo de carga de la clase al remover todas las llamadas de delegados a self.class.
2.1.9
Problemas resueltos
-
#1159 Se corrigió para que los bloques de compilación no se anulen entre sí cuando están anidados.
-
#1154 No elimines documentos de muchos a muchos en un conjunto de arreglo vacío.
-
#1153 Conservar la referencia del documento principal en los callbacks posteriores.
-
#1151 Arreglar bucle infinito de validación asociado en documentos autorreferenciados.
-
#1150 Validates asociado en
belongs_toesfalsepor defecto. -
#1149 Configuración de metadatos fijos en
belongs_torelaciones. -
#1145 metadatos Inverse debería regresar
nilsiinverse_offue establecido comonil. -
#1139 Los objetivos enumerables ahora hacen cuac como los arreglos.
-
#1136 Configurar
belongs_topadre comonilya no elimina al padre. -
#1120 No llames a
in_memoryen relaciones si no responden a ello. -
#1075 Establece
selfen los procesos por defecto en la instancia del documento. -
#1072 Redactar atributos para documentos anidados puede tomar un hash o un arreglo de hashes.
-
#990 Los documentos incrustados pueden usar un único
embedded_incon varias definiciones principales.
2.1.8
Problemas resueltos
-
#1148
respond_to?arreglado en todas las relaciones para que se devuelva correctamente. -
#1146 Agregado de nuevo la verificación de campos destructivos de Mongoid al definir campos.
-
#1141 Convertidos a valores fijos
nilen los criterios. -
#1131 Mongoid/Kaminari verificados paginando correctamente.
-
#1105 Se ha corregido el consumidor de actualización atómica para que esté limitado al alcance de la clase.
-
#1075
selfen los lambdas y procs por defecto ahora hacen referencia a la instancia del documento. -
#740 Se eliminó el parámetro de configuración
embedded_object_id. -
#661 Se ha corregido el almacenamiento en caché de metadatos en documentos incrustados.
-
#595 Se corrigió el marcado de recarga de relación.
-
410 Ahora, la transferencia de documentos de una relación a otra funciona como se espera.
2.1.7
Esta fue una versión específica para corregir MRI 1.8.7 incidencias introducidas por 2.1.6.
2.1.6
Problemas resueltos
-
#1126 Corrige la configuración de relaciones con otras proxies de relación.
-
#1122 Los campos hash y arreglos ahora se marcan correctamente como sucios al accederlos y modificarlos.
-
#656 Se corrigió la recarga que rompía las relaciones al desconfigurar asociaciones que ya estaban cargadas.
-
#647 Prefiere
#unsetsobre#remove_attributepara remover valores. -
#290 Verifica los envíos en documentos profundamente incrustados.
2.1.5
Problemas resueltos
-
#1116 Los niños incrustados retienen la referencia al padre en las devoluciones de llamada de destrucción.
-
#1110, #1115 No almacenes en caché los ayudantes relacionados con los metadatos en los documentos.
-
#1112
db:create_indexesya no indexa subclases múltiples veces. -
##1111, ##1098 No establezca
_iden las operaciones$set. -
#1007 La actualización del atributo realiza un seguimiento adecuado de los cambios en el arreglo.
2.1.4
Esta fue una versión específica para obtener un gemspec generado por Psych, de modo que no se produzcan más errores de análisis en los rubíes que estaban utilizando el nuevo analizador YAML.
2.1.3
Problemas resueltos
-
#1109 Validaciones fijas que no cargan uno por uno en la memoria.
-
#1107 A Mongoid ya no le interesa que
mongoid/railtiesea obligatorio enapplication.rb. -
#1102 Eliminada corrección de atributos anidados.
-
#1097 Recargar ahora ejecuta
after_initializecallbacks. -
#1079 Embeds muchos ya no duplican documentos.
-
#1078 Criterios de coincidencia de arreglo fijo en documentos incrustados.
-
#1028 Implementa el alcance en relaciones uno a muchos y muchos a muchos.
-
#988 "Many-to-many clear" ya no elimina los documentos secundarios.
-
#977 El guardado automático de relaciones también funciona a través de atributos anidados.
-
#972 La incrustación recursiva ahora gestiona el namespacing en los nombres generados.
-
#943 No sobrescribas
Document#attributes. -
#893 Verifica que el recuento no se esté almacenando en caché en relaciones de muchos a muchos.
-
#815 Verifique que
after_initializese ejecute en el lugar correcto. -
#793 Verifique la cadena de alcances
any_ofcorrectamente con cualquier otro alcance. -
#776 Se corrigió la calidad del caso de mongoid al tratar con subclases.
-
#747 Se corrigieron los criterios complejos utilizando sus claves para renderizar su valor en forma de cadena.
-
#721
#safelyahora genera correctamente errores de validación cuando se presentan.
2.1.2
Problemas resueltos
-
#1082 Alias
sizeylengthacountsegún criterios. (Adam Greene) -
#1044 Cuando se definen varias relaciones para la misma clase, siempre devolver la inversa por defecto primero si
inverse_ofno está definida. -
#710 Los atributos anidados aceptan tanto
idcomo_iden hashes o arreglos. -
#1047 Ignorar los valores
nilpasados aembeds_manpushes y sustituciones. (Derick Bailey)
2.1.1
Problemas resueltos
-
#1021, #719 Las relaciones de muchos a muchos no generan queries extra a la base de datos al agregar nuevos documentos.
-
#607 Llamar a
createen asociaciones grandes no carga la relación completa. -
#1064
Mongoid::Paranoiadebe respetarunscopedyscoped. -
#1026
model#update_attributeahora puede actualizar booleanos afalse. -
La librería #618 Crack XML rompe Mongoid al añadir el método
#attributesa la claseString. (Stephen McGinty)
2.1.0
Cambios importantes
-
Mongoid ahora requiere MongoDB 1.8.x para brindar soporte adecuado a las operaciones atómicas
#bity#rename. -
El soporte tradicionales para esclavos se ha eliminado de Mongoid. Se debe utilizar sets de réplicas en lugar de configuraciones tradicionales de maestro y esclavo.
-
La serialización de campos personalizados ha cambiado. Consulta serializable para ver los cambios.
-
El seguimiento de atributos sucios se ha cambiado para utilizar ActiveModel, esto aporta muchas correcciones de errores y cambios:
-
#756 Después, los callbacks y observadores pueden ver qué cambios se realizaron en lugar de que los cambios recientes estén en previous_changes
-
#434 Los documentos ahora están marcados como sucios cuando son completamente nuevos o si el estado en la creación difiere del estado en la base de datos. Esto es coherente con ActiveRecord.
-
En la versión #323, Mongoid ahora admite [campo]_will_change! de ActiveModel::Dirty.
-
La precarga del modelo Mongoid en modo de desarrollo ahora es por defecto
false. -
:autosave => trueen las asociaciones relacionales ahora se guardan al actualizar así como al crear. -
Mongoid ahora tiene un identidad de mapa para consultas sencillas de
find_by_id. Consulta la documentación en el sitio web.
Nuevas características:
-
Los campos #1067 ahora aceptan un atributo
:versionedpara poder desactivar qué campos se versionan conMongoid::Versioning. (Jim Benton) -
#587 Se ha añadido preferencia de orden a asociaciones muchos y muchos a muchos. (Gregory Man)
-
Se ha añadido la capacidad de encadenar las
order_byinstrucciones. (Gregory Man) -
#961 Permite que opciones arbitrarias de
Mongo::Connectionpasen a través del objetoMongoid::Config::Database. (Morgan Nelson) -
Activar
autosavepara referencias de muchos a muchos. (Dave Krupinski) -
Se han añadido las siguientes operaciones atómicas explícitas:
Model#bit,Model#pop,Model#pull,Model#push_all,Model#rename,Model#unset. -
Se han agregado traducciones de excepciones para hindi. (Sukeerthi Adiga)
Problemas resueltos
-
#974 Corregir
attribute_present?para que funcione correctamente cuando el valor del atributo esfalse, gracias a @nickhoffman. (Gregory Man) -
La tarea Rake de creación de índices #960 no está reconociendo muchos modelos de mongoid porque tiene problemas para adivinar sus nombres de modelo a partir de los nombres de archivo. (Tobias Schlottke)
-
#874 Borrar desde una referencia M-M es unilateral. (nickhoffman, davekrupinski)
-
Sustituye la función obsoleta
class_inheritable_hashdescartada en Rails 3.1+. (Konstantin Shabanov) -
Corrija el estado inconsistente al reemplazar toda una relación muchos a muchos.
-
No sobreescribas los atributos heredables al agregar la herencia de campos de subclase. (Dave Krupinski)
-
#914 Consultando documentos incrustados con el selector
$or. (Max Golovnia) -
#514 Reparar la transmisión de documentos con extensiones de relación. (Chris Griego)
-
Metadata#extensionahora devuelve unModule, en lugar de unProc, cuando se define una extensión. -
#837 Cuando
allow_dynamic_fieldsse configura enfalsey se está cargando un documento incrustado con un campo no reconocido, se produce una excepción. -
#963 Se inicializó el arreglo de documentos incrustados mediante hash regresado (Chris Griego, Morgan Nelson)
-
Mongoid::Config.resetrestablece las opciones a sus valores por defecto. -
Mongoid::Fields.defaultses memorizado para una instanciación más rápida de los modelos.