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
-
Se añadió la prueba MONGOID-3020 para demostrar que ya no es un problema.
-
Se añadió la prueba MONGOID-3025 para demostrar que ya no es un problema.
-
MONGOID-3061 El problema ha dejado de existir.
-
Se añadió la prueba MONGOID-3073 para demostrar que ya no es un problema.
-
Se añadió la prueba MONGOID-3085 para demostrar 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.
-
Se añadió la prueba MONGOID-3214 para demostrar que ya no es un problema.
-
MONGOID-3296 Agregar devolución de llamada de actualización para counter_cache.
-
Se añadió la prueba MONGOID-3326 para demostrar que ya no es un problema.
-
MONGOID-3361 El problema ha dejado de existir.
-
Se añadió la prueba MONGOID-3365 para demostrar 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 y demuestra que no es un problema.
-
MONGOID-3543 La prueba ya existe y demuestra que no es un problema.
-
Se añadió la prueba MONGOID-3611 para demostrar que ya no es un problema.
-
MONGOID-3650 El problema ha dejado de existir.
-
MONGOID-3826, MONGOID-4109 Corrección de fugas de atemporalidad.
-
Se añadió la prueba MONGOID-3946 para demostrar que ya no es un problema.
-
Se añadió la prueba MONGOID-3969 para demostrar que ya no es un problema.
-
MONGOID-3971 No es un problema.
-
MONGOID-3979 No es un problema, ya existen pruebas.
-
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)
-
Se añadió la prueba MONGOID-3737 para demostrar que ya no es un problema.
-
MONGOID-3621 No es un problema.
-
MONGOID-3551 No es un problema.
-
Se añadió la prueba MONGOID-3696 para demostrar que ya no es un problema.
-
Se añadió la prueba MONGOID-3858 para demostrar 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.
-
Se agregó un certificado público al repositorio y se firmó la gema si la clave 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 porclient. Esto incluye la configuración de mongoid.yml, las opciones destore_iny 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 agregan una ordenación_idcuando no se proporcionan 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 corrigió la carga de la relación enumerable para verificar los documentos agregados durante la iteración.
-
#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 corrigió la inclusión de mongoid con componentes Rails que no tienen el entorno Rails.
-
#3993 Corrige un problema donde
dup/clonefalla para los documentos incrustados que usan store_as sin usar Mongoid::Atributes::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 tareas de rake ahora expande la ruta de los rieles.
-
#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 ¡Agrega 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 claves 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 Se corrigen muchas llamadas internas a #_id en lugar de #id para evitar problemas al sobrecargar #id (Gauthier Delacroix)
-
#3847 Se corrige el resultado de 'QueryCache#get_more' cuando la colección contiene más documentos que el primer lote de consulta. (Angelica Korsun)
-
#3684 No elevar MissingAttributeError, al usar un alcance only(). (Arthur Neves)
-
El método #3703 pluck no debe compactar los valores. (Arthur Neves)
-
#3773 Use nanosegundos para la marca de tiempo de la clave de caché en lugar de segundos. (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)
Todas las tareas rake de db:* deberían funcionar como antes al usar Rails. Cuando no se esté en un entorno Rails, simplemente cargue las tareas de la base de datos usando:
load 'mongoid/tasks/database.rake' -
Mongoid 4 solo es compatible con MongoDB 2.4.0 y versiones superiores.
-
Document#metadataSe ha renombrado aDocument#relation_metadatapara evitar conflictos comunes. Los proxies de relación también tienen este nombre. -
Los alcances y los alcances predeterminados ahora deben definirse todos dentro de lambdas o procedimientos.
-
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:Siempre leerá desde un nodo principal. (predeterminado) -
:primary_preferredRealiza un intento de atribuir primero al primer solicitante y después al secundario si no hay ninguno disponible. -
:secondary: Siempre se leerá desde un nodo secundario. -
:secondary_preferred: Intente con uno secundario primero, luego con uno primario si ninguno está disponible. -
:nearest: Intentar leer desde el nodo con la latencia más baja.
Sintaxis de ejemplo:
Person.with(read: :secondary).firstLa opción
:consistencyya no es válida, utiliza ahora la opción:read. -
-
Mongoid ahora establece de forma predeterminada que todas las escrituras se propaguen (anteriormente "modo seguro") y ahora tiene una semántica de propagación diferente:
-
{ w: -1 }No verifiques los guardados ni generes errores de red. -
{ w: 0 }:No verifique las escrituras y genere errores de red. -
{ w: 1 }: Verificar escrituras en el nodo principal. (predeterminado) -
{ w: n }: Verificar guardar en n número de nodos. -
{ w: "majority" }:Verifique escrituras en la mayoría de los nodos.
Sintaxis de ejemplo:
Person.with(write: {w: :majority}).create!(name: "John")La opción
:safeya no es válida, utilice la opción:writeahora. -
-
#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 argumentos(field, value)anteriores. 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 solo poder aplicar un conjunto de operaciones a la vez. 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 eliminó porque quedó obsoleto en MongoDB 2.4. UseDocument.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 las relaciones ahora pueden tomar una matriz de atributos como primer parámetro para crear múltiples 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 endEsto ahora tendría que modelarse como (con la migración adecuada):
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. -
#2433
Mongoid::Paranoiaha sido eliminado. -
#2432
Mongoid::Versioningha sido eliminado. -
#2218 La creación o instanciación de documentos que tienen alcances predeterminados ahora aplicará el alcance predeterminado al documento, si el alcance 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 sin procesar. -
#1908 Los documentos que se carguen con los criterios
#onlyo#withoutgenerarán un error al intentar guardar, actualizar o eliminar 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.Las llamadas de actualización se pueden ejecutar de forma normal en el bloque:
document.atomically do document.inc(likes: 10) document.bit(members: { and: 10 }) document.set(name: "Photek") endEl documento también se produce en el bloque:
document.atomically do |doc| doc.inc(likes: 10) doc.bit(members: { and: 10 }) doc.set(name: "Photek") endLos comandos atómicos disponen de una interfaz fluida:
document.atomically do |doc| doc.inc(likes: 10).bit(members: { and: 10 }).set(name: "Photek") endSi se utiliza la interfaz de fluido sin el bloque
atomically, las operaciones permanecerán en llamadas individuales. Por ejemplo, lo siguiente haría 3 llamadas a la base de datos sin el bloque proporcionado:doc.inc(likes: 10).bit(members: { and: 10 }).set(name: "Photek")El bloque solo es válido para 1 documento a la vez, por lo que las actualizaciones de documentos incrustados y raíz no pueden mezclarse en este momento.
Nuevas características:
-
Mongoid ahora usa ActiveSupport::LogSubscriber para suscribir registros y ActiveSupport::Notifications para enviar registros de operaciones. (Arthur Neves) Ejemplo de suscripción a registros:
ActiveSupport::Notifications.subscribe('query.moped') do |evento| .. end
-
Los tipos de campo pueden ahora utilizar símbolos además de nombres de clases. Consulta: github.com/mongoid/mongoid/blob/master/lib/mongoid/fields.rb#L16 para obtener información sobre los mapeos disponibles.
-
#3580 Los campos ahora se pueden restablecer a sus valores por defecto, con los métodos:
document.reset_name_to_default!
-
#3513 Los documentos ahora tienen un método
#destroy!que generará un errorMongoid::Errors::DocumentNotDestroyedsi una devolución de llamada de destrucción devuelve un valor falso. -
#3496 Se agregaron niveles de clase y niveles de criterio
find_or_create_by!. -
#3479 Map/reduce ahora respeta los criterios sin opciones de tiempo de espera si la salida no está en línea.
-
#3478 Los objetos de criterios ahora tienen un método #none que hará que los criterios nunca lleguen a la base de datos y siempre tengan cero documentos.
Band.none Band.none.where(name: "Herramienta") # Siempre tiene cero documentos.
-
#3410 Mongoid ahora tiene una caché de query que puede utilizarse como middleware en aplicaciones Rack. (Arthur Neves)
Para 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.
Ten en cuenta que cualquier complemento de 3tercera parte que proporcione un método
text_searchahora dejará de funcionar con Mongoid y deberá cambiar su sintaxis. ejemplo: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 proporcionar múltiples extensiones a las relaciones. (Daniel Libanori)
Problemas resueltos
-
#3676 Hacer que el punteo funcione con asociaciones integradas (Arthur Neves)
-
#2898 Los métodos de atributos sucios ahora gestionan correctamente los alias de campo. (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 validar documentos marcados para 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 faltantes en los campos localizados actuales.
-
#3514 Se corrigió el caché de consultas 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 cambio de nombre no deben convertir valores en mongoísmos. (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 La creación de documentos fuera de los ámbitos para relaciones integradas ahora establece correctamente el documento principal en los secundarios 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 "abiertos" funcionen a través de relaciones 1-n.
-
#3348 Solucionando los índices compuestos que tienen las mismas claves en diferentes direcciones. (Arthur Neves)
-
#2701 Se corrige una consulta adicional en el enlace belong_to. (Arthur Neves)
-
#3089 Permitir la demonizació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)
-
#3088 El campo de rango 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 eliminó la extensión de cadena
to_ano utilizada.
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úrese 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 Se corrigió la opción .timeless para usar un atributo local del hilo en lugar de un atributo de clase. También se eliminaron los métodos timeless de toda la documentación y se agregaron solo a la documentación 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 relaciones polimórficas. -
#3192 Campos alias fijos + combinaciones de campos localizados con validación. (Johnny Shields)
-
#3173 Se solucionaron problemas relacionados con las relaciones de muchos a muchos con claves primarias personalizadas. (Bowen Sun)
-
Ahora la actualización de #3159 marca correctamente los documentos como persistentes.
-
#3137 Permitir múltiples conjuntos
belongs_toen una fila con identificadores. -
#3079 Los documentos incrustados con padres paranoicos perdían el _id al recargarlos desde la base de datos, ya que no tenían el valor de "persistente" correcto. (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 las matrices 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 existente. (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 Se corrigió la validación de unicidad para campos localizados cuando no se distingue entre mayúsculas y minúsculas. (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 memorizació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 correctamente mongoizados.
-
#2822 La carga Marshal de relaciones ahora vuelve a aplicar correctamente las extensiones.
3.1.1
Problemas resueltos
-
#2839 Validaciones corregidas para usar el valor de conversión de tipo, con la excepción del validador de numericidad. (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 clave principal 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 La anulación de la configuración de 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 envía correctamente el bloque 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. -
#2657 Se han añadido métodos de obtención y establecimiento del registrador al 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 (www.mongodb.com/es/docs/manual/core/indexes/#ttl-indexes, 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 verán afectadas automáticamente cuando se cree o destruya el documento secundario. -
Se agregaron
Document.first_or_create!yCriteria#first_or_create!. Esto genera un error de validación si la creación falla.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 incrustaciones de muchas relaciones ahora manejan 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 agregó
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 Al proporcionar una configuración de sesión sin puertos, Mongoid ahora los establecerá de forma predeterminada 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 Al llamar a sort en un contexto, se actualizan 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.
-
#2697 Se corrigió la carga ansiosa al incluir varios modelos que heredan de la misma clase. (Kirill Lazarev)
-
#2664 La ordenación en memoria de documentos incrustados ahora funciona correctamente 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 correctamente mongoizados.
-
#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 realice la compilació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 las macros de validación de unicidad, presencia y asociadas también estén disponibles en el nivel de instancia.
-
#2772 Los campos localizados ahora se gestionan correctamente al clonar un documento.
-
#2758
Mongoid.create_indexesno falla cuando no se puede constanteizar la 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 Admite claves enteras en campos hash cuando se utiliza
read_attributecon notación de punto. -
#2739 Asegúrese de que la deserialización de enteros se convierta correctamente en 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
-
Liberado 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)
-
#2678 Llamar 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 Establezca el documento descargado en la 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 se carga con ansias, llamar a
firstolasty luego iterar todos los resultados correctamente carga con ansias la solicitud completa. -
#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 Corrige
Marshal.dumpyMarshal.loadde los objetos proxy y de 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 que llamar a
firstdespués de unlastque tenía opciones de clasificación restablezca la clasificación. -
#2604 Chequea los pulls y pushes para detectar actualizaciones en conflicto. (Lucas Souza)
-
#2600 Instancie el tipo de clase adecuado para los atributos cuando utilice atributos de múltiples parámetros. (xxswingxx)
-
#2598 Se corrigió la clasificación en campos localizados con Docs incrustados.
-
#2588 Bloque que define métodos para atributos dinámicos que serían métodos Ruby no válidos. (Matt Sanford)
-
#2587 Se corrige el conflicto de métodos con los servidores proxy
belongs_toal restablecer los criterios de relación descargados. -
#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 Evita que los horarios de fin de mes se redondeen hacia arriba, ya que los flotantes no son lo suficientemente precisos para manejar el uso. (Steve Valaitis)
-
#2573 No usar i18n para mensajes de inspección.
-
#2571 Remover mensaje de error en blanco de las localizaciones. (Jordan Elver)
-
#2568 Corregir la validación de unicidad para 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 la clase principal donde ambos tienen valores predeterminados con procedimientos ahora anulan correctamente el valor predeterminado en la subclase.
-
#2528 Los campos con alias deben duplicarse cuando se heredan subclases.
-
#2527 Asegúrese de que la eliminación de documentos en un
has_manyrealice una actualización múltiple cuando se configura en una matriz vacía.
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 se debe presionar el mapa de identidad una vez más cuando el valor devuelto es 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 Maneje los saltos y límites fuera del rango en las relaciones embeds_many de manera elegante.
-
#2474 Desvincula correctamente las relaciones 1-1 cuando el hijo aún no está cargado. (Kostyantyn Stepanyuk)
-
#2451
relation.deleteden documentos paranoicos incrustados ahora vuelve a funcionar correctamente. -
#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 se eliminan mediante atributos anidados ya no se eliminan inmediatamente de la relación si falla la validación principal. En su lugar, se marcan para su destrucción y la eliminación se produce cuando el documento principal supera la validación y persiste.
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 llamada a la creación de métodos sucios adicionales. (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 pérdida de memoria en la selección en cadena de 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)
-
#2411 Los campos BigDecimal se almacenan correctamente como cadenas cuando se convierten números enteros y flotantes en mongo.
-
#2409 No avisar sobre la falta de mongoid.yml si se ha configurado por programación.
-
#2403 Devuelve falso en
update_allde muchas incrustaciones sin documentos. -
#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 í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 Al limitar los campos devueltos en las consultas a través de
only, asegúrese de que la limitación se limite al modelo. -
#2353 Permitir que
update_attributegestione adecuadamente los campos con alias. -
#2348 La conversión de cadenas a horas debería generar un error de argumento si la cadena no es válida. (Campbell Allen)
-
#2346 Asegúrese de que las relaciones
belongs_topuedan evolucionar cuando se pasan 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úrese de que el orden se aplique a 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 Array y Hash a los que solo se accedió y que no cambiaron. Regresión de 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 predeterminados ahora se fusionan correctamente en lugar de sobrescribirse cuando se define más de uno, según lo previsto con AR. (Kirill Maksimov)
-
#2300 Asegúrate de que al recargar se refresque el documento en el mapa de identidad.
-
#2298 Protección contra relaciones de muchos a muchos que extraen un conjunto nulo de identificadores. (Jonathan Hyman)
-
#2291 Se corrigieron las operaciones táctiles 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 se marcan 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 Asegúrese de que los documentos subclasificados no se puedan extraer del mapa de identidad a través de una identificación de otro documento en la misma colección con un tipo padre o similar.
-
#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 Se soluciona la carga ansiosa para que no se carguen todos los documentos cuando se llama primero o último.
-
#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 aceptaBigDecimalvalores. -
#2216 Asignación fija de metadatos en embeddings one relations al establecer varias veces seguidas.
-
#2212 Asegúrese de que los errores se eliminen 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 no son válidos (no son relaciones o tienen un nivel superior al 1). -
#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 Ahora se respeta el autoguardado falso 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 entran en conflicto con los métodos del núcleo Ruby pasen las verificaciones 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.Ten en cuenta que esta opción es global y anula todos los modelos en el hilo actual. Es responsabilidad del desarrollador recordar volver a establecer esto en nil si ya no desea que se produzca la anulación.
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#countSiempre accederá a la base de datos para obtener el recuento.Criteria#lengthyCriteria#sizeaccederá a la base de datos una vez si los criterios no se han cargado, y las llamadas posteriores devolverán el valor en caché.Si se ha iterado o cargado sobre los criterios,
lengthysizenunca impactarán en la base de datos. -
#1976 La carga ansiosa 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 endActualice la marca de tiempo del documento updated_at a la hora actual. Esto también actualizará la marca de tiempo de cualquier relación editable.
Band.first.touchActualice un campo de tiempo específico junto con udpated_at.
Band.first.touch(:founded)Esto no activa validaciones ni devoluciones de llamadas.
-
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 cuando corresponda.
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 endTen en cuenta que al proporcionar un nombre de campo y ningún bloque, se devolverá un solo valor numérico, pero al proporcionar un bloque, se devolverá un documento que contiene el valor mínimo/máximo. Esto se debe a que la API Enumerable de Ruby dicta que al proporcionar un bloque, se devuelve el elemento coincidente.
Al proporcionar un bloque, todos los documentos se cargarán en la memoria. Al proporcionar un símbolo, la ejecución se realiza mediante map/reduce en el servidor.
-
Ahora se proporciona un método de agregación de todo tipo de datos, para obtener todo en una única llamada a un campo.
Band.aggregates(:likes) # => # { # "count" => 2.0, # "max" => 1000.0, # "min" => 500.0, # "sum" => 1500.0, # "avg" => 750.0 # } -
Ahora se proporciona una API DSL fuera de los criterios para operaciones de mapeo/reducción para mayor comodidad.
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 genera un error
AmbiguousRelationshipcuando no puede determinar la inversa de una relación y hay varios 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 documentos 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 Agregue un método para verificar si el campo difiere del valor predeterminado.
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 regex.
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)
Cuando hay un índice presente en un modelo orientado a documentos raíz:
Creating indexes on: Model for: name, dob.Cuando se define un índice en un modelo embebido:
Index ignored on: Address, please define in the root model.Cuando no se define ningún índice, no se registra nada y si se define un índice no válido se genera un error.
-
#1710 Para los casos en los que no desea que Mongoid proteja automáticamente los atributos id y type, puede establecer una opción de configuración para desactivar esto.
Mongoid.protect_sensitive_fields = false -
#1685 Pertenece a relaciones que ahora tienen 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_by, que toma un hash de argumentos para buscar en la base de datos. Si no se devuelve ningún documento, se genera un error 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 -
#1355 Ahora las asociaciones pueden tener opciones de seguridad 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 Eliminar atributo ahora anula el atributo cuando se guarda el documento en lugar de establecerlo en nulo.
band = Band.find(id) band.remove_attribute(:label) # Uses $unset when the document is saved. -
#1291 Las sesiones de base de datos de Mongoid ahora se conectan de forma diferida y son completamente seguras para subprocesos. Si se crea un nuevo subproceso, 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 le permite persistir en cualquier base de datos o colección que desee en tiempo de ejecución, en función de cada consulta o operación de persistencia mediante el uso de
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" endPor supuesto, esto se puede anular en tiempo de ejecución a través del método
with. -
#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 verificar de forma simplificada si la relación está en blanco 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? -
Las relaciones1188 1-1 ahora tienen la opción :autobuild para indicar si la relación debe generarse automáticamente con atributos vacíos al acceder a ella cuando la relación no existe. Funciona con embeds_one, embedded_in, has_one y belong_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.Al utilizar comprobaciones de existencia, la construcción automática no se ejecutará.
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 endLos valores de solo lectura se ignoran cuando se intenta establecerlos en documentos persistentes, con la excepción de update_attribute y remove_attribute, donde se generarán errores.
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 nombre/dirección, con un segundo parámetro hash opcional para opciones adicionales.
Indexación normal con opciones, las direcciones son 1 o -1:
class Band include Mongoid::Document field :name, type: String index({ name: 1 }, { unique: true, background: true }) endLa indexación geoespacial necesita "2d" como dirección.
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.#mongoizees un método de instancia que transforma tu objeto en un valor compatible con mongo..demongoizees un método de clase, que puede tomar algunos datos de mongo e instanciar un objeto de tu tipo personalizado..evolvees un método de clase, que puede tomar cualquier objeto y transformarlo para su uso en unMongoid::Criteria.Un ejemplo de una implementación de esto para
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 endTen en cuenta que, aunque las firmas son las mismas tanto para los contextos de memoria como mongo, se recomienda que solo utilices la sintaxis de bloque para el contexto de memoria, ya que los documentos incrustados ya están cargados en la memoria.
También tenga en cuenta que pasar un valor booleano para tener en cuenta skip y limit ya no es compatible, ya que esta no necesariamente es una funcionalidad útil.
-
Se ha eliminado la opción de configuración
autocreate_indexes. -
Model.defaultsYa no existe. Puedes obtener todos los valores predeterminados con una combinación deModel.pre_processed_defaultsyModel.post_processed_defaults.Band.pre_processed_defaults Band.post_processed_defaults -
Model.identitySe han eliminadoModel.keyy . Para los identificadores personalizados, los usuarios ahora deben anular el campo _id.Cuando el valor por defecto es un proc, el valor por defecto se aplica después de que se establecen todos los demás atributos.
class Band include Mongoid::Document field :_id, type: String, default: ->{ name } endPara que el valor por defecto se aplique antes que otros atributos, configura
:pre_processeden verdadero.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 admite 1.8. Solo se admiten MRI 1.9.3 y superiores, o JRuby 1.6 y superiores 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 Añadir la validación de presencia a una relación ahora habilita el autoguardado. Esto garantiza que, cuando se guarda un nuevo objeto principal con un nuevo objeto secundario y se marca como válido, ambos se conserven para asegurar 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.
Si el ID está configurado pero el documento correspondiente no ha sido guardado, al acceder a la relación se obtendrán resultados vacíos.
Si el ID está establecido y su documento se ha guardado, al acceder a la relación se devolverá el documento.
Si el ID está configurado, pero el documento base no se guarda posteriormente, al recargar se devolverá el documento a su estado original.
-
#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.
La serialización de matrices llama a
Array.wrap(object)La serialización de hashes llama aHash[object](to_hash en el objeto) La serialización de números enteros siempre devuelve un int a través deto_iLa serialización de valores booleanos tiene como valor predeterminado falso en lugar de nulo. -
#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.
Los criterios#as_conditions y Criterios#fuse ya no existen.
Criteria#merge ahora solo acepta otro objeto que responda a
to_criteria.Criteria#merge! ahora fusiona otro objeto sin crear un nuevo objeto de criterios.
Band.where(name: "Tool").merge!(criteria)Los ámbitos nombrados y los ámbitos por defecto ya no aceptan hashes como parámetros. A partir de ahora, solo se aceptarán criterios y procs que envuelvan criterios, y se generará un error si los argumentos son incorrectos.
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. endSe ha eliminado la macro 'named_scope', de ahora en adelante utilice únicamente 'scope'.
Model.unscoped ahora acepta un bloque que no permitirá que se aplique el alcance predeterminado para ninguna llamada dentro del bloque.
Band.unscoped do Band.scoped.where(name: "Ministry") endModel.scoped ahora toma opciones que se establecerán directamente en el hash de opciones de criterios.
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 durante la carga ansiosa, ya que verificará si el tipo es correcto después. -
#2129 Se corrigió la clasificación de todos los campos en incrustaciones de muchas relaciones.
-
#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 Permitir que
Criteria#update_allacepte 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 Expandir criterios complejos en selectores de criterios 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 están respaldados por hash, lo que evita duplicados de una 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 incorporó de nuevo la funcionalidad
touchde Mongoid 3.
2.5.2
Problemas resueltos
-
#2502 Se corrigió la clave de caché para gestionar correctamente los casos en los que 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 Retroportar la corrección de atributos anidados para mantener muchas relaciones en memoria al actualizar 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 las devoluciones de llamadas de destrucción se ejecuten después del reemplazo de una relación de incrustaciones.
-
#2169 Permitir que los guardados pasen cuando los documentos se destruyen después del guardado en una función de retorno.
-
#2144 La validación de unicidad en documentos paranoicos ahora tiene un alcance adecuado.
-
#2127 No desvincule los padres de los documentos incrustados durante 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 Permit lilizar la serialización de tipos dinámicos que entren en conflicto con los métodos principales de Ruby para que aún puedan serializarse.
-
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 elimine documentos incrustados paranoicos a través de atributos anidados cuando una devolución de llamada before_destroy devuelve falso.
-
#1994
dependent: :deleteahora solo accede a la base de datos una vez para las relaciones de uno a muchos y de muchos a muchos en lugar de una vez para 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úrese de que los criterios complejos se amplíen 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 Al eliminar colecciones, se desmemoriza la colección internamente encapsulada para garantizar que, al definir 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 expanda el criterio de identificación duplicada en un $and con selecciones duplicadas.
-
#1878 Se corrigieron los valores predeterminados de la aplicación para que no se apliquen en ciertas selecciones
onlyowithouten la iteración, no solo enfirstylast. -
#1874 Se corrigió la constante de rechazo de todos los procedimientos en blanco para manejar los valores correctamente con un valor de destrucción que no esté en blanco. (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 Siempre pase opciones de símbolo 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 Destruir documentos incrustados en un embeds_many también debe eliminar el documento del objetivo subyacente _uncoped y volver a indexar la relación.
-
#1814 No realice devoluciones de llamadas en cascada en after_initialize.
-
#1800 Las opciones no válidas para la conexión Mongo ahora se filtran.
-
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 El modelo #update_attributes vuelve a aceptar opciones de asignación masiva. (Hans Hasselberg)
-
#1762 El criterio #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 de puntos en los criterios de incrustación funcione tanto en incrustaciones de uno como de varios. (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 Expandir criterios complejos en selectores de criterios 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 Borra los conjuntos atómicos retrasados al restablecer la misma relación integrada.
-
#1656/#1657 No acceda 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 desde la base de datos mediante
Criteria#onlyyCriteria#withouty luego guardar el documento, los valores predeterminados ya no anulan 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 Los criterios $all y $in en relaciones múltiples integradas ahora gestionan correctamente las búsquedas de expresiones regulares y elementos de longitud variable. (Douwe Maan)
-
#1623/#1634 Los ámbitos predeterminados ya no interrumpen 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 se puede incluir nuevamente en la serialización a json o xml como una opción global con
include_type_for_serialization. (Roman Shterenzon) -
#1627 La validación de formato ahora funciona correctamente con campos localizados. (Douwe Maan)
-
#1617 Los métodos de 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 especificaciones, reemplazada por la configuración de las variables de entorno MONGOID_SPEC_HOST y MONGOID_SPEC_PORT.
-
#1610 Al versionar documentos paranoicos y se establece la versión máxima, elimine por completo las versiones antiguas de la relación incorporada.
-
#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 Conservar la estructura de las consultas $and y $or al realizar la conversión de tipos.
-
#1600 La validación de unicidad ya no genera errores cuando se proporciona una relación.
-
#1599 Asegúrese de que los objetivos enumerables cedan el paso a lo que está en la memoria primero cuando se ejecuta #each, no siempre a lo descargado 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 con alias obtienen todos los métodos de atributos incorrectos y todos los métodos de obtención y establecimiento, tanto para el nombre original como para el alias. (Hans Hasselberg)
-
#1568 Retorno 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.
-
#1557 La clase de estrategia interna 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 cadenas de nuevo en símbolos para los campos de símbolos que otra aplicación guarda como cadenas.
-
Las asociaciones #1454, #900 ahora tienen una devolución de llamada
after_buildque se ejecuta después de llamar a 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 No se agregó soporte a los métodos de símbolos de criterios. (Marc Weil)
-
#1403 Se agregó la opción de configuración
scope_overwrite_exception, cuyo valor predeterminado es falso para generar un error al definir un ámbito con nombre que coincide con el nombre de un método existente. (Christoph Grabo) -
#1388
model.add_to_setahora admite la adición de múltiples valores y ejecuta un $addToSet con $each en segundo plano. (Christian Felder) -
#1387 Añadido
Model#cache_keypara su uso en la caché de Rails. (Seivan Heidari) -
#1380 Llamar a Model.find(id) ahora convertirá correctamente hacia y desde cualquier tipo en función del tipo del campo _id.
-
#1363 Se agregaron alternativas y soporte predeterminado para campos localizados, y se agregó la capacidad de obtener y configurar todas las traducciones a la vez.
-
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 Divida la aplicación de valores predeterminados en proc/non-procs, donde los no-procs se ejecutan inmediatamente durante la instanciación y los procs se ejecutan después de que se establecen 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 Tiene muchas sustituciones de relaciones y ahora maneja cualquier tipo de combinación de documentos 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 La aplicación de nuevas opciones de ordenación no se integra con los criterios previamente encadenados. (Gerad Suyderhoud)
-
#1481 Se corrige una consulta no válida al acceder a relaciones de muchos a muchos antes de que se establezcan los valores predeterminados.
-
#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 los campos de clave externa en criterios complejos para no escapar del hash completo.
-
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 documentos nuevos ya no se conservan cuando se reemplazan por uno que tiene uno como 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 matriz y hash ahora se copian en profundidad para el seguimiento sucio.
-
#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 agregue criterios de clasificación predeterminados primero si ya existen criterios de clasificación.
-
Se corrigió #1394 existe? para que funcione cuando el recuento sea mayor que 1. (Nick Hoffman)
-
#1392 Devuelve 0 en funciones de agregación donde el campo no existe.
-
#1391 La validación de unicidad ahora funciona correctamente en documentos incrustados que utilizan definiciones de clave principal.
-
#1390 Cuando el campo _type está en minúscula, la clase camelize antes de constanteizar.
-
#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 en HABTM guarde sus claves después de guardar un documento secundario recién compilado.
-
#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 Se redujo la dependencia de 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 anula 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 corrigió el rendimiento de la instanciación del observador de Mongoid al conectarse a los ganchos de carga de Active Support, al estilo 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 cadena de comillas dobles y tilde 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 clasificación predeterminados duplicados 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 Permitir agregar relaciones referenciadas en bloques de creación, después del conjunto predeterminado.
-
#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 Se corrigieron errores en el punto de referencia de rendimiento.
-
#1316 Se agregó una tarea Rake independiente "db:mongoid:drop" para que Mongoid y AR puedan coexistir. (Daniel Vartanov)
-
#1311 Se soluciona el problema con la serialización de campos personalizados que heredan del 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 solucionó que varias inclusiones solo ejecutaran la carga ansiosa 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 paranoicos ejecutan correctamente las devoluciones de llamadas de destrucción en la destrucción suave.
-
#1061 Genera
Mongoid::Errors::InvalidTimecuando falla la serialización de tiempo. -
#1002 Verifique los identificadores de bson legales al intentar la conversión.
-
#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 tienen el modo seguro predeterminado como verdadero, ahora puede indicarle 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 Las marcas de tiempo ahora se pueden desactivar llamada por 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 del modelo activo 3.1 y superior.
-
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 cambió el nombre del método de construcción interno a _building.
-
#1288, #1289 _id y updated_at no deben formar parte de los atributos versionados.
-
#1273 Mongoid.preload_models ahora comprueba si la opción de configuración de precarga está activada, 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 vuelve a funcionar como se esperaba. -
#939 Aplicar atributos predeterminados 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 que tienen relaciones agregadas después de la persistencia de los originales ahora pueden tener nuevas relaciones agregadas sin 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 anula 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 solucionó que varias inclusiones solo ejecutaran la carga ansiosa de la primera.
-
#1225 se corrigió la persistencia retrasada de documentos incrustados mediante $set.
-
#1002 Se corrige la conversión de identificación del 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 objetivo enumerable debe usar el criterio de conteo si el elemento cargado no tiene documentación.
-
#1164 Elimine los errores restantes de no haber métodos en la memoria.
-
#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.
-
#1220 Los metadatos no deben sobrescribirse con nil durante el enlace.
-
#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 Fuerza a Model.first a ordenar por identificación ascendente para garantizar el primer documento.
-
#1248 Añadido #desagrupado para relaciones embebidas de muchos a muchos.
-
#1249 Las banderas de destrucción en atributos anidados ahora destruyen el documento para has_many en lugar de solo romper la relación.
-
#1272 No modifique las opciones de configuración existentes al crear conexiones de conjuntos 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
collection.find_and_modify -
Document#has_attribute?ahora es un alias deDocument#attribute_present? -
#930 Ahora puede desactivar el registrador Mongoid a través de mongoid.yml haciendo
logger: false -
#909 Ahora generamos una excepción
Mongoid::Errors::Callbacksi persistimos con un método bang y una devolución de llamada devuelve falso, en lugar del error de validaciones no 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 incrustadas ya no persisten de forma inmediata y atómica al acceder a ellas mediante un conjunto de atributos primarios. Esto incluye la configuración de atributos anidados y
attributes=owrite_attributes. Los cambios secundarios se mantienen y se actualizan automáticamente al guardarse en ellos o en el documento primario.
Problemas resueltos
-
#1190 Se corrigieron 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 aumentó el rendimiento de los tiempos de carga de clases al eliminar 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 elimine documentos de muchos a muchos en un conjunto de matrices vacío.
-
#1153 Conservar la referencia del documento principal en los callbacks posteriores.
-
#1151 Se corrige el bucle infinito de validación asociado en documentos con autorreferencia.
-
#1150 Las validaciones asociadas en
belongs_tosonfalsede manera predeterminada. -
#1149 Configuración de metadatos fijos en
belongs_torelaciones. -
#1145 metadatos Inverse debería regresar
nilsiinverse_offue establecido comonil. -
#1139 Los objetivos enumerables ahora se procesan como matrices.
-
#1136 Configurar
belongs_topadre comonilya no elimina al padre. -
#1120 No llames a
in_memoryen relaciones si no responden a ello. -
#1075 Establezca
selfen los procedimientos predeterminados en la instancia del documento. -
#1072 Los atributos de escritura para documentos anidados pueden tomar un hash o una matriz 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ó la señalización 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 elementos secundarios incrustados conservan la referencia al elemento primario en las devoluciones de llamadas 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 varias veces. -
#1111, #1098 No establezca
_iden$setoperaciones. -
#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 Se corrigieron las validaciones que no cargaban uno a uno en la memoria.
-
#1107 A Mongoid ya no le interesa que
mongoid/railtiesea obligatorio enapplication.rb. -
#1102 Se corrigió la eliminación de atributos anidados.
-
#1097 Recargar ahora ejecuta
after_initializecallbacks. -
#1079 Incrusta muchos documentos que ya no duplican.
-
#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 Las relaciones de guardado automático también funcionan a través de atributos anidados.
-
#972 La incrustación recursiva ahora maneja el espacio entre nombres 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 que la cadena de ámbitos
any_ofse conecte correctamente con cualquier otro ámbito. -
#776 Se corrigió la calidad del caso mongoide 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 los criterios. (Adam Greene) -
#1044 Cuando se definen múltiples relaciones para la misma clase, siempre se devuelve primero la inversa predeterminada si no se define
inverse_of. -
#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 activan consultas de base de datos adicionales al enviar documentos nuevos.
-
#607 Llamar a
createen asociaciones grandes no carga la relación completa. -
#1064
Mongoid::Paranoiadebe respetarunscopedyscoped. -
#1026
model#update_attributeahora puede actualizar valores booleanos afalse. -
#618 La biblioteca 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. Consulte la sección "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.
-
#323 Mongoid ahora admite [field]_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 desvirtúe 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.defaultsSe memoriza para una instanciación más rápida de los modelos.