Overview
Para obtener instrucciones sobre cómo actualizar a versiones más nuevas, visita mongoid.org.
A partir de la versión 5.0.2, consulte las versiones de GitHub para ver los registros de cambios.
5.0.1
Problemas resueltos
-
Se3020 agregó la prueba MONGOID- para demostrar que ya no es un problema.
-
Se3025 agregó la prueba MONGOID- para demostrar que ya no es un problema.
-
MONGOID-3061 Ya no es un problema.
-
Se3073 agregó la prueba MONGOID- para demostrar que ya no es un problema.
-
Se3085 agregó la prueba MONGOID- para demostrar que ya no es un problema.
-
MONGOID-3101 Ya no es un problema.
-
MONGOID-3160 Ya no es un problema.
-
MONGOID-3176 Ya no es un problema.
-
Se3214 agregó la prueba MONGOID- para demostrar que ya no es un problema.
-
MONGOID-3296 Agregar devolución de llamada de actualización para counter_cache.
-
Se3326 agregó la prueba MONGOID- para demostrar que ya no es un problema.
-
MONGOID-3361 Ya no es un problema.
-
Se3365 agregó la prueba MONGOID- para demostrar que ya no es un problema.
-
MONGOID-3402 Aplicar opciones de persistencia al padre.
-
MONGOID-3524 Ya no es un problema.
-
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.
-
Se3611 agregó la prueba MONGOID- para demostrar que ya no es un problema.
-
MONGOID-3650 Ya no es un problema.
-
MONGOID-,3826 MONGOID-4109 Corrigen fugas de atemporalidad.
-
Se3946 agregó la prueba MONGOID- para demostrar que ya no es un problema.
-
Se3969 agregó la prueba MONGOID- 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 Tiene en cuenta la notación de puntos de subdocumentos con resultados #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úrese de que el selector de criterios se convierta en el valor del operador de canalización.
-
MONGOID-4121 No es un problema.
-
MONGOID-4123 Arreglado como resultado de MONGOID-4159.
-
MONGOID- Asegúrese4125 de que no se apliquen los ámbitos referenciados en los procedimientos.
-
MONGOID-4132 No es un problema.
-
MONGOID-4157 Corregido por 2.1.2 la versión del controlador Ruby.
-
MONGOID-4162 Adaptar las asignaciones de opciones de índice al nuevo controlador. (@Nielsomat)
-
Se3737 agregó la prueba MONGOID- para demostrar que ya no es un problema.
-
MONGOID-3621 No es un problema.
-
MONGOID-3551 No es un problema.
-
Se3696 agregó la prueba MONGOID- para demostrar que ya no es un problema.
-
Se3858 agregó la prueba MONGOID- para demostrar que ya no es un problema.
-
MONGOID-3672 No es un problema.
-
MONGOID-4172 Utilice el operador posicional solo en el 1 anidamiento profundo de nivel.
-
Se agregó un certificado público al repositorio y se firmó la gema si la clave privada está presente
5.0.0
Cambios importantes (incompatibles con versiones anteriores)
-
Mongoid ahora utiliza el controlador oficial Mongo Ruby 2.x en lugar de Moped.
-
La mayoría de las opciones de configuración específicas del controlador han cambiado, consulte aquí 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_modifySe ha eliminado y reemplazado con 3 opciones:find_one_and_update,find_one_and_deleteyfind_one_and_replace. -
text_searchSe ha eliminado ya que ahora es una opción$texten una consulta a partir de 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?Se ha eliminado el alias, continúe usandoDocument#destroyed?.
Nuevas características:
-
#4016 Permitir establecedores privados y protegidos en campos para operaciones atómicas. (Rob Smith)
-
#3985 Devuelve nulo cuando se usa
{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 Use el contexto de subclase al llamar a un ámbito definido en una superclase. (Edgars Beigarts)
-
#4075 Se hizo que el registro de eliminación de índice sea específico para cada índice que realmente se estaba eliminando.
-
#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 duplicación/clonación incluyen automáticamente atributos dinámicos.
-
#4005 Se corrigió la inclusión de mongoid con componentes Rails que no tienen el entorno Rails.
-
#3993 Corrige el problema donde
dup/clonefalla para 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 opción de instantánea al contexto.
-
#3868 La carga de modelos en tareas de rake ahora expande la ruta de los rieles.
-
#3764 Se corrigió la verificación de la declaración del caso fijo para objetivos enumerables.
-
#3740 Corrige el error
Missing attribute: '_id'al usar solo métodos o sin (dx7) -
#3631 Corrige el problema donde la devolución de llamada
before_savepuede ser llamada dos veces después de la creación de un hijo -
#3599 Se corrigió la aplicación de los ámbitos predeterminados de la superclase en las subclases.
-
#3104 Se corrigieron los objetivos enumerables para verificar el primero/último en el orden adecuado.
4.0.2
Nuevas características:
-
#3931 Añadir el método #find_or_create_by! a muchas asociaciones. (Tom Beynon)
-
#3731 ¡Agrega find_by! método. (Guillermo Iguarán)
Problemas resueltos
-
#3722 Use el nombre de base de datos correcto al combinar #store_in y #with. (Arthur Neves)
-
#3934 No aplicar ordenación al realizar una búsqueda por. (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 Se corrige la función remove_undefined_indexes en los rieles 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 consultar usando ese ID. (Arthur Neves)
-
#3888 genera un error UnknownAttributeError cuando se llama a '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 inexistente 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 Corrige las relaciones llamadas "padre". (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 se debe generar MissingAttributeError al usar un ámbito 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 importantes (incompatibles con versiones anteriores)
-
#3320 Eliminar las dependencias de Rails en las tareas de rake de la base de datos. (Arthur Neves)
Todas las tareas de db:* rake deberían funcionar como antes al usar Rails. Si no se usa Rails, simplemente cargue las tareas de la base de datos usando:
load 'mongoid/tasks/database.rake' -
Mongoid 4 ahora solo admite MongoDB 2.4.0 y 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_checkSe eliminó la opción de configuración. -
Mapa de identidad eliminado. (Arthur Neves)
-
Rediseño de la carga ansiosa. La carga ansiosa ya no necesita el mapa de identidad para cargar documentos relacionados. Un conjunto de precargadores puede cargar ansiosa las asociaciones pasadas al método .includes. (Arthur Neves)
-
Mongoid ahora es compatible con las nuevas preferencias de lectura proporcionadas por los controladores principales. Estas incluyen:
-
:primary:Siempre leerá desde un nodo principal. (predeterminado) -
:primary_preferred:Intente primero con una primaria, luego con una secundaria si no hay ninguna disponible. -
:secondary:Siempre leerá desde un nodo secundario. -
:secondary_preferred:Intente primero con una secundaria y luego con una primaria si no hay ninguna disponible. -
:nearest:Intente 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, utilice la opción:readahora. -
-
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 verifica las escrituras y no genera 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 escrituras 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 Array y Hash ahora validan que se configuren los tipos correctos, en lugar de permitir cualquier valor. (Rodrigo Saito)
-
#3043/#2949 Reelaboración de los aspectos internos de las opciones de persistencia. (Arthur Neves)
-
Mongoid ahora requiere el modelo activo 4 o superior.
-
Document#setAhora acepta múltiples atributos en forma de hash, en lugar de los argumentos(field, value)anteriores. Esta operación también admite alias de campo y conversión de tipos.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 solo 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 poder extraer solo un valor a la vez. 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 solo extraer un 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 solo extraer un 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 individuales o múltiples en el campo mediante $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. -
#3138 Ahora se puede acceder a
update_attributessimplemente llamando aupdate. -
#3083 Se agregó una nueva tarea de rake:
rake db:mongoid:remove_undefined_indexespara eliminar de la base de datos los índices que no están definidos explícitamente en los modelos. (Aidan Feldman) -
#3029 Se ha eliminado el campo
relation_field, que se añade para un caso de uso único con relaciones polimórficas. Por lo tanto, antes funcionaba 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 endAhora esto debería modelarse de la siguiente manera (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)
-
#3037 Los índices del modelo ya no se almacenan en un hash
index_optionsen la clase del modelo. En su lugar, ahora existe una matriz llamadaindex_specificationsen la clase que contiene una lista deIndexable::Specificationobjetos. Esto nos permite gestionar correctamente el caso de índices con las mismas claves, pero en diferente orden. -
#2956 El almacenamiento en caché de 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 de retorno de los establecedores ahora son siempre el valor establecido, independientemente de si se llama al establecedor o se usa el envío.
-
#2597
Mongoid::Observerfue eliminado de acuerdo con Rails 4. -
#2563 Se ha eliminado la opción de configuración
allow_dynamic_fields, ya que ahora se permiten campos dinámicos por modelo. Para que un modelo pueda usar 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 altera el valor de retorno del controlador y devuelve correctamente{ "$oid" : object_id.to_s }en lugar de solo la representación de cadena anterior. -
#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 asignación masiva ahora refleja el comportamiento de Rails 4. También se eliminó la opción
without_protection. Se eliminó el método de claseattr_accessible. Los parámetros Mongoid y Strong deberían funcionar correctamente para la protección de la 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 se pueden ejecutar en un bloque
atomically, lo que retrasará cualquier actualización atómica en el documento en el que se llamó el bloque hasta que el bloque se complete.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 cede al bloque:
document.atomically do |doc| doc.inc(likes: 10) doc.bit(members: { and: 10 }) doc.set(name: "Photek") endLos comandos atómicos tienen una interfaz fluida:
document.atomically do |doc| doc.inc(likes: 10).bit(members: { and: 10 }).set(name: "Photek") endSi se utiliza la interfaz fluida sin el bloque
atomically, las operaciones persistirán en llamadas individuales. Por ejemplo, la siguiente instrucción accedería a la base de datos 3 veces sin el bloque proporcionado:doc.inc(likes: 10).bit(members: { and: 10 }).set(name: "Photek")El bloque solo es válido para 1 documentos a la vez, por lo que las actualizaciones de documentos raíz e incrustados no se pueden combinar 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') hacer |evento| .. fin
-
Los tipos de campo ahora pueden usar símbolos además de nombres de clase. Consulta: github.com/mongoid/mongoid/blob/master/lib/mongoid/fields.rb#L16 para ver las asignaciones disponibles.
-
#3580 Los campos ahora se pueden restablecer a sus valores predeterminados, 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 agregó el nivel de clase y el nivel 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: "Tool") # Siempre tiene cero documentos.
-
#3410 Mongoid ahora cuenta con un caché de consultas que puede usarse como middleware en aplicaciones Rack. (Arthur Neves)
Para rieles:
config.middleware.use(Mongoid::QueryCache::Middleware)
-
#3319 Los contadores ahora se pueden restablecer desde una instancia de documento:
document.reset_counters(:relación)
-
#3310 Las relaciones embedded_in ahora aceptan una opción
touchpara actualizar los 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 Se agregó la opción "sobrescribir campo". Cuando sea verdadera, no se verificarán los duplicados. (Daniel Libanori)
-
#3002 Recargar la consola Rails ahora también borrará el mapa de identidad de Mongoid.
-
#2938 Se ha añadido la opción de configuración
duplicate_fields_exception, que, al establecerse entrue, generará una excepción al definir un campo que anulará un método existente. (Arthur Neves) -
#2924 La búsqueda de texto beta de MongoDB 2.4 ahora cuenta con un DSL proporcionado por Mongoid. Al igual que otras consultas, las búsquedas de texto se evalúan de forma diferida y están disponibles fuera del nivel de clase o criterio.
Tenga en cuenta que cualquier gema de terceros 3que proporcione un método
text_searchya no funcionará con Mongoid y deberá cambiar su sintaxis. Ejemplos: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 Agregar 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 Corrección de la carga ansiosa de has_and_belongs_to_many. (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 Asignar valores booleanos a Mongoid::Boolean en las definiciones de campo. (Arthur Neves)
-
#3449 La función táctil 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 perdía 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 Corrección de índices compuestos con las mismas claves y direcciones diferentes. (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 La caché del contador también debería actualizar el documento en memoria. (Arthur Neves)
-
#3242 La relación Has_many debe usar la clave externa inversa. (Arthur Neves)
-
#3233 No realice devoluciones de llamadas de validación dos veces cuando la validación de relación y de elementos secundarios en cascada esté activada.
-
#3197 Mejoras en las llamadas a
aggregatesen colecciones raíz e incrustadas. (Wojciech Piekutowski) -
#3144/#3219 Se corrige la colisión de nombres en la variable @_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 tienen el prefijo
_. -
#3093 Solo aplana el nivel 1 cuando empujas matrices atómicamente.
-
#3063
Document#becomesahora establece correctamente el objeto base en caso de errores. (Adam Ross Cohen) -
#3019 Las operaciones atómicas ya no intentarán persistir si el documento no persiste.
-
#2903 Se eliminó la extensión de cadena
to_ano utilizada.
3.1.7
Problemas resueltos
-
#3465 Se corrigieron errores de relación ambigua donde inverse_of se establece en nulo.
-
#3414 Retroportar opciones de omisión y limitación en la agregación. (Wojciech Piekutowski)
-
#3469 Corregir 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 de matriz atómica fija en los campos de clave externa HABTM que impedían que elementos individuales se convirtieran en matrices.
-
#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 Aumentar la dependencia de tzinfo a 0.3.29.
-
#3203 Se corrigió la especificación
index: truepara relaciones polimórficas. -
#3192 Se corrigieron las combinaciones de campos alias y 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)
-
#3081 El criterio
method_missingahora verifica si una matriz responde al método proporcionado antes de llamar a las entradas para no acceder a la base de datos si se generara unNoMethodError. -
#3068 La especificación fija se ejecuta en puertos MongoDB no estándar si
MONGOID_SPEC_PORTestá configurado. -
#3047 Asegúrese de que
blank?yempty?no se vean afectados por el método que falta en los criterios. -
Incluir updated_at en cache_key incluso cuando sea 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 a crear en lugar de llamar después de que se creó el documento. -
#3021 Se eliminó la advertencia
mongoid.ymldel inicializador, esto ahora lo manejan 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 corrigió la compatibilidad con campos con alias para la validación de unicidad. (Johnny Shields)
-
#3008 Se corrigió el problema de que las subclases no podían heredar los ámbitos correctamente cuando se agregaba un ámbito después de la carga de la clase. (Mike Dillon)
-
#2991
Document.timelessahora tiene como alcance correcto la instancia y no el subproceso. -
#2980 Los campos dinámicos ahora gestionan correctamente la edición in situ de hashes y matrices. (Matthew Widmann)
-
#2979
pluckya no modifica el contexto existente. (Brian Goff) -
#2970 Se corrigió el caché del contador para usar correctamente el nombre de la relación si está disponible y luego el nombre de la clase inversa en segundo lugar si no lo está.
-
#2959 Los atributos anidados ahora respetarán
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 "Between". (Arthur Neves)
-
#2961 Recargar una configuración de mongoid.yml ahora borra correctamente las sesiones configuradas previamente.
-
#2937 Los conteos ahora pueden tomar un argumento
truepara factorizar saltos y límites. (Arthur Neves) -
#2921 No utilice el tipo en la selección del mapa 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 cuando se procesan atributos anidados ahora puede ser una cadena o un símbolo cuando se pasa una matriz. -
#2886 Se solucionó el problema de espacio de nombres con los generadores Rails.
-
#2885 Se corrigió el toque para campos con alias. (Niels Ganser)
-
#2883 Permitir que las relaciones cíclicas no generen errores de relación mixta.
-
#2867
pluckahora maneja 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 demonización BigDecimal de valores NaN. (nkem)
-
#2848 Se corrigió el error
touchpara que funcione al usar marcas de tiempo cortas. (Arthur Neves) -
#2840 Se solucionó el manejo de la opción
no_timeoutde extremo a extremo. -
#2826 Los campos dinámicos ahora están correctamente mongoizados.
-
#2822 La carga de relaciones de Marshal ahora vuelve a aplicar las extensiones correctamente.
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 #2838
store_inahora se fusionan correctamente en lugar de anularse. (Colin MacKenzie)
3.1.0
Nuevas características:
-
El requisito mínimo de MongoDB ahora se eleva a 2.2, ya que ahora dependemos del marco de agregación.
-
Las dependencias mínimas del Modelo Activo y del Soporte Activo se han aumentado 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 admite los nuevos tipos de índice: "2dsphere", "text" y "hashed". (Irakli Janiashvili)
-
#2767 Ahora se admite la compatibilidad con $maxScan desde Origin. (Jonathan Hyman)
-
#2701 Limpiar consultas de base de datos excesivas con relaciones 1-1.
-
#2693 Se pueden pasar nombres de colecciones personalizados al generador de modelos. (Subhash Bhushan)
rails g model band --collection=artists -
#2688
Model.createyModel.create!ahora pueden usar una matriz de hashes de atributos para crear varios documentos a la vez. Si se proporciona una matriz de atributos, se devuelve una matriz 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 caché de contadores para las relaciones
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
belongs_toahora pueden cargarse con anticipación. -
#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 procedimientos ahora se pueden proporcionar como valores a
store_in:class Band include Mongoid::Document store_in database: ->{ Thread.current[:database] } end -
#2609 Pasar la opción `batch_size` a la consulta. (Martin Mauch)
-
#2555 Pasar hashes a
findcuando el ID del documento es de tipo hash ahora funciona correctamente. (Szymon Kurcab) -
#2545 El operador posicional
$se utiliza para actualizar selectores en documentos incrustados que están anidados en el nivel 1 de profundidad, cuando corresponde. -
#2539
Mongoid.modelsahora rastrea todos los modelos de la aplicación para una determinación más precisa de los modelos para tareas como la indexación de rake. (Ara Howard) -
#2525 Se agregó la capacidad de tener campos cortos con marca de tiempo y alias. Esto establece los campos de marca de tiempo como
c_atyu_at, que también tienen 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 -
#2465 Los documentos ahora tienen un
attribute_before_type_castpara el correcto manejo 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 agregaron
Document.first_or_initializeyCriteria#first_or_initialize. Es igual quefirst_or_create, pero inicializa un documento nuevo (no persistente) si no se encuentra ninguno.Band.where(name: "Depeche Mode").first_or_initialize Band.where(name: "Tool").first_or_initialize(active: true) -
Se agregaron
Model.pluckyCriteria#pluck, similares a los de Active Record, que devuelven una matriz 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 Se agregaron
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_configurationahora es público para aquellos que quieran crear instancias de configuraciones directamente desde un hash. -
#2275 Se agregó la tarea de rake
db:mongoid:purgeque eliminará todas las colecciones con excepción de las colecciones del sistema en la base de datos predeterminada. -
#2257
after_findSe han agregado devoluciones de llamadas para cuando se devuelven documentos desde la base de datos.class Band include Mongoid::Document after_find do |doc| # Some logic here. end end -
#2223 Permite encontrar documentos mediante JavaScript con parámetros que están protegidos contra la inyección de JavaScript a través de
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 según su tipo de campo, si se define un campo. -
#2022 Las devoluciones de llamadas personalizadas ahora pueden registrarse para su uso con observadores mediante 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 foráneas de muchos a muchos ahora tienen el valor predeterminado configurado de forma diferida solo si se ha accedido a la relación. Esto evita almacenar matrices vacías si la relación no se ha modificado.
Problemas resueltos
-
#2730 Al llamar a sort en un contexto, se actualizan correctamente los criterios del contexto. (Arthur Neves)
-
#2719
distinctahora está disponible a nivel de clase.Band.distinct(:name) -
#2714 La anulación de sesiones cuando la nueva sesión tiene una base de datos diferente ahora también 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 demonización BigDecimal de valores NaN. (nkem)
-
#2841 Al llamar a
delete_allodestroy_allen una incrustación múltiple durante una actualización principal, ahora se ejecutará correctamente la eliminación. (Arthur Neves) -
#2835 Se solucionó la limpieza de las opciones de persistencia en el validador de unicidad.
-
#2826 Los campos dinámicos ahora están correctamente mongoizados.
-
#2822 La carga de relaciones de Marshal ahora vuelve a aplicar las extensiones correctamente.
-
#2821 Las relaciones autoguardadas deberían duplicarse en las clases heredadas.
3.0.22
Problemas resueltos
-
#2812 Criterios fijos en relaciones de muchos a muchos cuando se destruye el documento base y la clave externa aún no se ha evaluado de forma diferida.
-
#2796 No aplique cambios en cascada en las relaciones has_many al asignar con una eliminación.
-
#2795 Corregir la precisión en las conversiones de tiempo. (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 corrigieron las devoluciones de llamadas en cascada regresivas al destruir que no se activaban.
-
#2784 Se corrigió la validación de unicidad, que se agregó correctamente a las subclases. (Takeshi Akima)
3.0.21
Problemas resueltos
-
#2781 / * #2777 - Se solucionó el 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 manejan correctamente al clonar un documento.
-
#2758
Mongoid.create_indexesno falla cuando no se puede constanteizar la clase. (Arthur Neves) -
#2743 Las opciones de persistencia ya no se borran al cargar revisiones. (Arthur Neves)
-
#2741 Se corrigen errores de redondeo de uso de mongoización 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 Se corrigió la lógica sobre cuándo se pueden agregar elementos secundarios a la lista de devoluciones de llamadas 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 cancelar una relación con un criterio o alcance encadenado ahora mantiene correctamente las relaciones intactas en el documento nuevo o encontrado. -
#2699 Al restablecer un campo, ahora se elimina el nombre de la lista de atributos modificados. (Subhash Bhushan)
-
#2683 Ahora se admiten campos con alias 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: Moped ahora debe tener al menos la versión 1.2.0.
3.0.16
Problemas resueltos
-
#2661 Implementar el nivel de instancia
model_namepara los documentos. -
#2651 Asegúrese de que
Criteria#typefuncione correctamente con las claves de símbolo y de cadena en el selector. -
#2647 Asegúrese de que
deleted?ydestroyed?en los documentos paranoicos devuelvan 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 inserte por lotes matrices vacías en documentos incrustados. (Laszlo Bacsi)
-
#2639 Evite consultas innecesarias adicionales en registros nuevos al crear 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 siempre utiliza la consistencia de cadena de manera predeterminada.
-
#2564 Se corrigió la recursión infinita para los casos en los que se anuló un captador de relación y se llamó al definidor 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 Se corrige la cascada cuando existen los metadatos pero no hay una cascada definida.
-
#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. -
#2612
DocumentNotFoundLos errores ahora 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 documentos integrados.
-
#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úrese 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á establecida en
inline. -
#2582 Asegúrese de que la anulación de la sesión
nilnunca pueda provocar 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 Eliminar el mensaje de error en blanco de las configuraciones regionales. (Jordan Elver)
-
#2568 Se corrige la validación de unicidad para campos lacalizados cuando también se proporciona un alcance.
-
#2552 Asegúrese de que se generen errores
InvalidPathcuando los documentos incrustados intenten obtener rutas de un selector raíz.
3.0.13
Problemas resueltos
-
#2548 Se corrige el error al generar un archivo de configuración con una aplicación nueva con Unicorn en el conjunto de gemas.
3.0.12
Problemas resueltos
-
#2542 Permitir que los documentos incrustados que usan
store_asse asocien correctamente en los criterios. -
#2541 Asegúrese de que el cambio de tipo sea correcto al convertir un documento a una versión superior o inferior mediante
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 Se corrige la llamada a la unidad de trabajo para el mapa de identidad cuando se utiliza Passenger.
-
#2512 Asegúrese de que los atributos anidados de destrucción funcionen 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úrese de que los criterios
updateyupdate_allgestionen correctamente los campos con alias. (Dmitry Krasnoukhov) -
#2504
Model#becomesmantiene correctamente la misma identificación. -
#2498 Los criterios ahora pasan correctamente los bloques proporcionados a través de
method_missing. -
#2496 Los documentos incrustados que antes se almacenaban sin identificadores ahora se actualizan correctamente y obtienen identificadores asignados desde dentro de Mongoid.
-
#2494 Todas las operaciones atómicas explícitas ahora respetan adecuadamente los campos con alias.
-
#2493 Utilice
Class#nameen lugar deClass#model_nameal configurar tipos polimórficos en caso de que se haya anuladomodel_name. -
#2491 Se eliminó la llamada de combinación innecesaria en los elementos secundarios en cascada.
-
#2485 La eliminación de índices ahora siempre utiliza una consistencia fuerte.
-
#2483 El control de versiones ahora gestiona los campos localizados. (Lawrence Curtis)
-
#2482 Almacene los parámetros de búsqueda en el error
DocumentNotFound. -
#2481 Las agregaciones de mapas/reducciones ahora manejan correctamente la agrupación en lotes de trabajos de reducción de Mongo en grupos de 100 y el estado se pasa en el recuento.
-
#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 las relaciones integradas funcione correctamente cuando en realidad no se va a actualizar nada. -
#2469 Los documentos anulados en las relaciones ahora se pueden volver a agregar con la misma instancia en memoria.
-
#2454
Model#as_documentpermite correctamente los cambios desde tener una relación hasta la relación que se elimina. (James Almond) -
#2445 El middleware Mongoid ahora admite adecuadamente tanto las respuestas normales como las transmitidas y borra adecuadamente el mapa de identidad para cualquiera de ellas.
-
#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.
Tenga 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, esto pudo incluirse en una versión puntual.
3.0.9
Problemas resueltos
-
#2463 Se arregló el
rails g mongoid:configroto desde un repositorio nuevo. -
#2456 La caché de descendientes ahora se restablece cuando el documento se hereda nuevamente. (Kostyantyn Stepanyuk)
-
#2453
Model#write_attributeahora funciona 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 Transmita opciones de asignación masiva a los hijos cuando las configure a través de 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 al usar un criterio. -
#2414 Las definiciones de índice ahora respetan los campos con alias.
-
#2413 Los objetivos enumerables ahora devuelven enumeradores correctamente 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 advierte sobre la falta de mongoid.yml si se configura programáticamente.
-
#2403 Devuelve falso en
update_allde muchas incrustaciones sin documentos. -
#2401 Recupere la capacidad de fusionar un criterio con un hash.
-
#2399 Rechazar valores de ID en blanco en has_many
Model#object_ids=. (Tiago Rafael Godinho) -
#2393 Asegúrese de que
inverse_ofse respete al utilizar relaciones polimórficas. -
#2388 Map/reduce utiliza correctamente
sorten lugar deorderbyal ejecutar el 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 envíe dos veces los documentos secundarios cuando se llaman guardados adicionales en una devolución de llamada after_create.
3.0.8 (Arrancado)
3.0.6
Problemas resueltos
-
#2375 El alcance de validación de unicidad ahora funciona con campos con alias.
-
#2372 Asegúrese de que todas las operaciones atómicas conviertan valores en mongoizantes antes de ejecutarse.
-
Ahora, los documentos paranoicos #2370 no se borran correctamente al usar
dependent: :restricty se produce una excepción. -
#2365 No haga nada cuando intente reemplazar un embeds_one con el mismo documento.
-
#2362 No almacene la inversa de los valores de campo 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 correctamente 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 de mapa/reducción cuando los campos a veces no existen. (James McKinney)
-
#2330 Se corrigió la inconsistencia de #tamaño y #longitud en los criterios cuando los documentos se iteraron 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 devoluciones de llamadas desde el documento base si el documento no puede ejecutarlas.
-
#2318 Asegúrese de que al configurar cualquier valor numérico en un campo flotante realmente lo configure como flotante, incluso si el número proporcionado es un entero.
3.0.5
Problemas resueltos
-
#2313 Se corrigió 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 Establecer un duplicado de muchos a muchos sucesivamente en la memoria ya no borra las claves externas inversas.
-
#2309 Permitir que las relaciones embeds_one se establezcan con hashes más allá del conjunto inicial.
-
#2308 Asegúrese de que los documentos recuperados a través de
#finden las relacioneshas_manyyhas_and_belongs_to_manyse mantengan en la 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úrese de que la recarga actualice 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 Se corrige la sincronización de relaciones de muchos a muchos cuando existe un ámbito de ordenamiento predeterminado en ambos lados de la asociación.
-
#2278
Criteria#updateahora actualiza correctamente solo el primer documento coincidente, mientras queCriteria#update_allactualizará todos los documentos coincidentes. (sin bandera vs multi). -
#2274 Al cargar modelos, advertir si se produce un error, pero continuar con el procesamiento.
-
#2272 No borre selectores ni opciones al eliminar el ámbito predeterminado para valores nulos. También debe comprobar si la clave existe.
-
#2266 Los documentos paranoicos restaurados ya no se marcan como destruidos. (Mario Uher)
-
#2263 Asegúrese de que la conversión de claves externas que no sean de identificación de objeto en relaciones de 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 en flotantes.
-
#2252 No active el guardado automático antes de que finalicen las devoluciones de llamadas.
-
#2248 Se mejoró el rendimiento de
exists?en criterios y relaciones. (Jonathan Hyman)
3.0.2
Problemas resueltos
-
#2244 Elimine las advertencias de asignación masiva de identificaciones 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 mapeo/reducción ahora siempre usan una consistencia fuerte ya que tienen el potencial de escribir en colecciones la mayor parte del tiempo.
-
#2238 Asegúrese de que nn campos de clave externa estén marcados como redimensionables para evitar cambios
nil->[]al usar#onlyy actualizar. -
#2236 Mantenga la instancia del documento en la excepción de validaciones accesible a través de
documentorecord. -
#2234 Asegúrese de que las validaciones cuando el documento se conserva con opciones personalizadas funcionen correctamente con las opciones personalizadas y no las borre si la validación pasa.
-
#2224
Model#incahora aceptaBigDecimalvalores. -
#2216 Se corrigió la asignación de metadatos en relaciones incrustadas cuando se configuraban varias veces seguidas.
-
#2212 Asegúrese de que los errores se eliminen después de guardar con
validate: falseen todas las situaciones. -
#2207 Cuando se cargan identificadores con ansias, la consulta debe ser duplicada para evitar problemas de iteración múltiple que impidan 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 Asegúrese de que haya una 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 estén serializados 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 Al solicitar metadatos antes de la persistencia, Mongoid ahora generará 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 devolución de llamada:
upsert, que se ejecuta al llamar adocument.upsert, ya que Mongoid desconoce si el documento debe tratarse como nuevo o persistente. Con esto se incluyen las devoluciones de llamada del modelo:before_upsert after_upsert around_upsert -
#2080/#2087 La base de datos o sesión en la que Mongoid persiste ahora se puede anular a nivel global en los casos en los que
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.Tenga en cuenta que esta opción es global y se aplica a todos los modelos del hilo actual. Es responsabilidad del desarrollador recordar volver a establecerla en nula si ya no desea que se aplique 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 no se han cargado los criterios, y las llamadas posteriores devolverán el valor almacenado en caché.Si se han iterado o cargado los criterios,
lengthysizenunca llegarán a 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 Los documentos y las relaciones
belongs_toahora admiten la función táctil.class Band include Mongoid::Document include Mongoid::Timestamps::Updated belongs_to :label, touch: true endActualiza la marca de tiempo "update_at" del documento a la hora actual. Esto también actualizará la marca de tiempo de cualquier relación que se pueda tocar.
Band.first.touchActualice un campo de tiempo específico junto con udpated_at.
Band.first.touch(:founded)Esto no activa ninguna validación 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 identidades al proporcionar múltiples identificaciones para su búsqueda. (Hans Hasselberg)
-
#1903 Mongoid genera un error si se proporciona una expresión de JavaScript en una cláusula where de una colección incrustada. (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 endTenga en cuenta que al proporcionar un nombre de campo y ningún bloque, se devolverá un único valor numérico, pero al proporcionar un bloque, se devolverá un documento con 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 memoria. Al proporcionar un símbolo, la ejecución se gestiona 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 Criteria. Consulta el repositorio de Origin y la documentación de la API para obtener más informació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 una explicación 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) -
#1842 MultiParameterAttributes ahora admite campos con alias. (Anton Orel)
-
#1833 Si se intenta guardar un documento incrustado sin un padre definido, Mongoid ahora generará una excepción
Mongoid::Errors::NoParent. -
Se agregó una forma independiente 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 las relaciones ahora acepta asignación masiva y opciones de tipo. (Tatsuya Ono)class Band include Mongoid::Document :albums end band.albums.find_or_create_by({ name: "101" }, LP) -
#1818 Añade la capacidad de elegir la clave donde se almacena la relación
embeds_many. (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" }]} -
#1806
Model.find_or_create_byyModel.find_or_initialize_byahora pueden tomar documentos como parámetros para las relaciones belong_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? -
#1759 Se han actualizado los mensajes de error de campos no válidos para mostrar el origen 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 ofrece una tarea de rake para forzar la eliminación de índices en entornos donde Mongoid gestiona las definiciones de índice y la eliminación debe ser automática. (Hans Hasselberg)
rake db:force_remove_indexes rake db:mongoid:force_remove_indexes -
#1726
Mongoid.load!ahora acepta un segundo argumento opcional para la carga del entorno. Esto tiene prioridad sobre cualquier variable de entorno establecida, 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 agregó un mejor registro al crear í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 integrado:
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 incorrecto, 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 Genera un
Mongoid::Errors::InverseNotFoundcuando se intenta establecer un hijo en una relación sin las definiciones inverse_of adecuadas 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 usan 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 Ahora se admite la compatibilidad con relaciones polimórficas separables de padres con la misma clase padre. Esto solo funciona si se configura desde el lado 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 Los objetos que responden a
to_criteriaahora se pueden fusionar con objetos de criterios existentes.class Filter def to_criteria # return a Criteria object. end end criteria = Person.where(title: "Sir") criteria.merge(filter) -
#1635 Todas las excepciones ahora proporcionan errores más completos, incluyendo el problema ocurrido, un resumen detallado de por qué ocurrió 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 guardado automático, como Active Record, al agregar un accepts_nested_attributes_for a 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 type de la asignación masiva. Puede anular esto (no se recomienda) redefiniéndolos como accesibles.
class Band include Mongoid::Document attr_accessible :id, :_id, :_type end -
#1459 El mapa de identidad ahora se puede deshabilitar para la ejecución de código específico 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 a bases de datos, según lo definido en mongoid.yml. Por ejemplo, podría tener una base de datos local de un solo servidor, un conjunto de réplicas de múltiples zonas de disponibilidad y un clúster de fragmentos, todo en el mismo entorno de aplicación. Mongoid puede conectarse a cualquier sesión en cualquier momento.
-
#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 Los documentos incrustados ahora pueden extraerse 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 belong_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 Se genera 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 Los campos ahora pueden marcarse como de solo lectura, lo que solo permitirá que sus valores se establezcan 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 importantes (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 estaba indicado explícitamente.
-
#2039 La validación de la presencia de una relación ahora verifica 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. Su objeto ya no debe incluir
Mongoid::Fields::Serializable; en su lugar, solo necesita implementar los métodos 3:#mongoize,.demongoizey.evolve.#mongoizees un método de instancia que transforma su 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 comporta exactamente igual que elcountde Ruby en un enumerable, y puede aceptar un objeto o un bloque. Esto se ha optimizado en el contexto Mongo para no cargar todo en memoria, excepto al pasar un bloque.Band.where(name: "Tool").count Band.where(name: "Tool").count(tool) # redundant. Band.where(name: "Tool") do |doc| doc.likes > 0 endTenga en cuenta que, aunque las firmas son las mismas para los contextos de memoria y mongo, se recomienda utilizar la sintaxis de bloque solo para el contexto de memoria, ya que los documentos integrados ya están cargados en la memoria.
Tenga en cuenta también que ya no se admite pasar un valor booleano para tener en cuenta el salto y el límite, ya que no es necesariamente una función ú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 predeterminado es un procedimiento, el valor predeterminado 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 predeterminado se aplique antes que otros atributos, establezca
:pre_processeden verdadero.class Band include Mongoid::Document field :_id, type: String, pre_processed: true, default: ->{ BSON::ObjectId.new.to_s } end -
Se han eliminado las excepciones de aplicaciones personalizadas en varios idiomas, junto con la función
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 mediante
Model.findcon múltiples identificadores, Mongoid generará un error si no se encuentran todos los identificadores y le indicará cuáles faltan. Anteriormente, el error solo se generaba 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 comporta igual que el registro activo. -
#1471 Mongoid ya no elimina ningún nivel de precisión de los tiempos.
-
#1475 La zona horaria del soporte activo ahora se utiliza de forma predeterminada 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 se ha renovado por completo, y al actualizar aplicaciones existentes, se mostrarán algunos errores de configuración específicos de Mongoid. Puede regenerar un nuevo archivo mongoid.yml mediante la tarea rake, que está muy comentada para facilitarle todas las posibilidades de configuración.
-
#1291 Se ha eliminado la opción de configuración
persist_in_safe_mode. Ahora debe indicar a una sesión de base de datos en mongoid.yml si debe persistir en modo seguro de forma predeterminada.production: sessions: default: database: my_app_prod hosts: - db.app.com:27018 - db.app.com:27019 options: consistency: :eventual safe: true -
Se han eliminado1291,
safelyyunsafely. Utilice ahorawithpara 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.
-
#1268 Se ha eliminado
Model#new?, los desarrolladores ahora siempre deben usarModel#new_record?. -
#1182 Ya no es necesario recargar una relación después de configurar el valor de su campo de clave externa. Tenga en cuenta que esto funciona igual que un registro activo.
Si se establece el id, pero el documento correspondiente no se ha conservado, al acceder a la relación se obtendrán resultados vacíos.
Si se establece el id y su documento persiste, al acceder a la relación se devolverá el documento.
Si se establece el id, pero el documento base no se guarda posteriormente, al recargarlo el documento volverá 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.sizeha sido renombrado a:field.countpara que $size no entre en conflicto con el método de tamaño de Symbol. -
#829/#797 El código de alcance de Mongoid se ha reescrito por completo y ahora coincide con la API de Registro Activo. Debido a este cambio incompatible con versiones anteriores, se han eliminado o renombrado algunos métodos.
Los criterios#as_conditions y Criterios#fuse ya no existen.
Criteria#merge ahora solo acepta otro objeto que responda a
to_criteria.¡Criterios#merge! ahora se fusiona en otro objeto sin crear un nuevo objeto de criterios.
Band.where(name: "Tool").merge!(criteria)Los ámbitos con nombre y los ámbitos predeterminados ya no aceptan hashes como parámetros. A partir de ahora, solo se aceptarán criterios y criterios de encapsulamiento de procedimientos, 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 acepta opciones que se establecerán directamente en el hash de opciones de criterios.
Band.scoped(skip: 10, limit: 20) -
#463
Document#upsertya no tiene alias deDocument#savey ahora ejecuta correctamente el comando upsert de MongoDB al ser llamado. Si usaba este método antes y desea el mismo comportamiento, cambie 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 predeterminado y se eliminó el alcance en documentos paranoicos.
-
#2122 Permitir que los documentos incrustados se ordenen en campos booleanos.
-
#2119 Permitir que
Criteria#update_allacepte operaciones atómicas y conjuntos normales. -
#2118 No elimine ninguna precisión durante las conversiones
DateTime->Time. -
#2117 Asegúrese de que las relaciones incrustadas tengan devoluciones de llamadas ejecutadas cuando se utilicen atributos anidados.
-
#2110
Model#touchahora funciona correctamente en documentos incrustados. -
#2100 Permitir que las operaciones atómicas se ejecuten correctamente en documentos paranoicos que tengan un removed_at establecido.
-
#2089 Permitir la separación adecuada de la mongoización y la evolución con respecto a las claves externas.
-
#2088 Permitir que las búsquedas por identificadores de cadena se extraigan del mapa de identidad si los identificadores se almacenan como identificadores de objeto.
-
#2085 Permitir la demongoización de flotantes y enteros a decimales grandes.
-
#2084 No aplicar en cascada si no existen metadatos.
-
#2078 Llamar a
Model#cloneoModel#dupahora establece correctamente los atributos como sucios. -
#2070 Permitir que updated_at se anule manualmente para documentos nuevos que también tengan un created_at.
-
#2041 No acceda a la base de datos varias veces en el acceso a la relación después de que una carga ansiosa no haya devuelto ningún documento.
-
#1997 Las devoluciones de llamadas en cascada deberían poder detener la cadena de devolución de llamadas al finalizar.
-
#1972
added,loadedyunloadedahora pueden ser nombres de alcance válidos en un documento que es parte de una relación 1-n. -
El comportamiento #1952/#1950
#all_inen documentos incrustados ahora coincide correctamente con los documentos raíz al pasar una matriz vacía. (Hans Hasselberg) -
#1941/#1939
Model.find_byahora devuelve nulo si el error de aumento no encontrado se establece en falso. (Hans Hasselberg) -
#1859/#1860
Model#remove_attributeahora se desactiva correctamente en documentos incrustados. (Anton Onyshchenko) -
#1852 Asegúrese de que no haya recursión infinita en las devoluciones de llamadas en cascada. (Ara Howard)
-
#1823
Relation#includes?ahora funciona correctamente con el mapa de identidad habilitado. -
#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 consultas de criterios incrustados. (Cyril Mougel)
-
#1745 Se corrigió la limpieza del lote para que funcione dentro de la configuración de atributos.
-
#1718 Asegúrese de la consistencia de #first/#last en las relaciones: ahora siempre coinciden con first/last en la base de datos, pero optan por estar primero en la 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 clasificación de identificación a primero/último si ya hay opciones de clasificación en los criterios.
-
#1321 Muchos objetivos enumerables referenciados ahora están respaldados por hash, lo que evita duplicados de una manera más eficiente.
-
#1135 DateTimes ahora obtiene correctamente las zonas horarias durante la deserialización.
-
#1031 Mongoid ahora serializa los valores en los campos de matriz a sus valores compatibles con Mongo cuando es posible.
-
#685 Intentar usar versiones con documentos incrustados ahora generará un error apropiado que alertará al desarrollador de 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 Correcciones de rendimiento y memoria en devoluciones de llamadas en cascada de backport de 3.0.0-stable.
-
#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 las gemas Mongo y BSON 1.7.0 y superiores y resuelve problemas que mantenían a la serie 2.4.x bloqueada por debajo de 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 se guarden los documentos cuando se destruyen después de guardarlos en una devolución de llamada.
-
#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 controlador 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 corrigió la interpolación incorrecta para la validación de presencia regional.
-
#2038 Permite que las relaciones inversas se determinen solo mediante claves externas si se definen en ambos lados, 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.
-
#2008 La validación de presencia debe llegar a la base de datos para verificar la validez si la relación en la memoria está en blanco.
-
#2006 Permitir excluir solo el campo _id después de la ejecución de una llamada #only.
2.4.10
Problemas resueltos
-
#2003 No falla 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 Permite configurar documentos incrustados en niveles profundos de forma atómica sin mods conflictivos cuando no se utilizan atributos anidados o documentos en sí mismos en una llamada de actualización desde el padre.
-
#1957/#1954 Asegúrese de que el nombre de la base de datos esté configurado con herencia. (Hans Hasselberg)
2.4.9
Problemas resueltos
-
#1943 Asegúrese de que la validación numérica funcione para decimales grandes.
-
#1938 La validación de longitud ahora funciona con campos localizados.
-
#1936 Ahora se gestionan correctamente los push conflictivos con otros push.
-
#1933
Proxy#extenddebe delegar hasta el destino, donde la extensión del proxy en sí ahora se maneja 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 mediante atributos anidados ahora ejecuta un `$pull` con criterios de coincidencia de ID en lugar de un `$pullAll` para cubrir todos los casos. Anteriormente, los valores predeterminados recién añadidos a documentos que ya habían persistido no se podían eliminar en este caso, ya que el documento no coincidía con lo que estaba en la base de datos.
-
#1924/#1917 Se corrige el envío a relaciones incrustadas con alcances 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)
-
#1916/#1913 La validación de unicidad ya no se ve afectada por el alcance predeterminado. (Hans Hasselberg)
-
#1943 Asegúrese de que la validación numérica funcione para decimales grandes.
2.4.8
Problemas resueltos
-
#1892 Cuando se recibe un error de operación no maestra, Mongoid debe reconectarse antes de volver a intentar 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 en varios niveles. (Chris Micacchi proporcionó las especificaciones).
-
#1866 Los valores predeterminados posprocesados (procs) se deben aplicar después de la vinculación del elemento secundario en una relación.build.
2.4.7
Problemas resueltos
-
Asegúrese de que la recarga de documentos incrustados conserve la referencia al padre.
-
#1837 Siempre pase opciones de símbolo al controlador.
-
#1836 Asegúrese de que los recuentos de relaciones tomen los documentos persistentes que no tuvieron el vínculo de clave externa persistente.
-
#1820 La destrucción de documentos incrustados en un embeds_many también debería eliminar el documento del destino _uncoped subyacente y reindexar 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.
-
#1785 Se ha corregido la igualdad de mayúsculas y minúsculas para gestionar las comprobaciones de instancias correctamente.
2.4.6
Problemas resueltos
-
#1772 Permite omitir y limitar para 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 Los metadatos ahora se devuelven automáticamente en las opciones para compatibilidad con bibliotecas externas.
-
#1757 Asegúrese de que la serialización convierta cualquier tipo de atributo al tipo definido por el campo.
-
#1756 Las opciones hash serializables deben pasar a los documentos integrados.
2.4.5
Problemas resueltos
-
#1751 El registrador de Mongoid ahora responde al nivel 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é configuraciones regionales estaban vacías en 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 devoluciones de llamadas de inicialización deben transmitirse en cascada a través de los elementos secundarios sin necesidad de determinar si se modifica el elemento secundario.
-
#1715 Los hashes serializables ahora son consistentes al incluir documentos incrustados antes o después de guardar.
-
#1713 Se corrigen las comprobaciones === al comparar una clase con una instancia de una subclase.
-
#1495 Las devoluciones de llamadas ya no obtienen los errores 'super llamado fuera del método' en los rubíes rotos 1.8.7.
2.4.4
Problemas resueltos
-
#1705 Permite cambiar el orden de muchas a muchas claves externas.
-
#1703 Actualizado en ahora tiene una nueva versión. (Lucas Souza)
-
#1686 Establece los metadatos base en desvinculación y también en vinculación para relaciones de pertenencia.
-
#1681 Intenta crear índices para modelos sin espacios de nombres si el espacio de nombres no existe para el subdirectorio.
-
#1676 Permitir que la carga ansiosa funcione como un ámbito predeterminado.
-
#1665/#1672 Expandir criterios complejos en selectores de criterios anidados, como #matches. (Hans Hasselberg)
-
#1668 Asegúrese de que el registrador Mongoid exista antes de llamar a la advertencia. (Rémy Coutable)
-
#1661 Asegúrese de que la validación de unicidad funcione en 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
-
#1647 La serialización de fecha y hora cuando ya está en UTC no se convierte a 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 ámbitos ya no modifican los ámbitos de la clase padre al crear subclases. (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 Se corrige 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 Evite errores de método cuando se pasan identificadores en atributos anidados y los documentos no existen.
-
#1605 Eliminar la advertencia de desuso 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 serialización adecuada de valores booleanos en criterios donde el campo está anidado dentro de una matriz.
2.4.1
Problemas resueltos
-
#1593 Las matrices en documentos incrustados ahora se actualizan de forma atómica y correcta cuando se modifican desde la versión original.
-
#1592 No acepte excepciones de la generación de índices en la tarea rake create_indexes.
-
#1589 Permitir la asignación de una matriz vacía a HABTM cuando aún no hay documentos cargados en la memoria.
-
#1587 Cuando un valor anterior para un campo de matriz era un nulo explícito, ahora se puede restablecer de forma atómica con nuevos valores.
-
#1585
Model#respond_to?ahora devuelve verdadero para el establecedor cuando se permiten campos dinámicos. -
#1582 Permitir que se establezcan valores nulos en matrices.
-
#1580 Permite que las matrices se establezcan en nulas después de guardar, y no solo vacías.
-
#1579 No llame a #to_a en elementos de campo de conjunto individuales en el criterio.
-
#1576 No acceda a la base de datos en la validación de unicidad si el campo que se está validando 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 base de datos o Ruby no estándar, utilice define_method en lugar de class_eval para crear los accesores y los métodos sucios.
-
#1557 La clase de estrategia interna ya no entra en conflicto con los modelos.
-
#1551 Los documentos principales ahora devuelven
trueparaModel#changed?si solo han cambiado los documentos secundarios (incrustados). -
#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 ansiosa ahora ocurre cuando se llama a
firstolasten un criterio si se especifican inclusiones.
2.4.0
Nuevas características:
-
Ahora se pueden pasar rangos a los criterios #where para crear una consulta $gte/$lte en segundo plano.
Person.where(dob: start_date...end_date) -
Los campos serializables personalizados ahora pueden anular #selection para proporcionar serialización personalizada para consultas de criterios.
-
#1544 Los datos internos utilizan
Array.wrapen lugar deto_aahora cuando es posible. -
#1511 La validación de presencia ahora admite 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 la 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)
-
#1448 Ahora se utiliza la localización 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 Se agregó
Model#cache_keypara su uso en el almacenamiento en 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.
-
#1362 Los campos con alias ahora se tipifican correctamente en los criterios.
-
#1337 Los campos de matriz, incluyendo muchas claves foráneas de HABTM, ahora cuentan con una comprobación de errores más inteligente y ya no realizan un simple $set si la matriz ha cambiado. Si solo se han añadido elementos a la matriz, realiza un $pushAll. Si solo se han eliminado elementos, realiza un $pullAll. Si se han añadido y eliminado elementos, realiza un $set para evitar modificaciones conflictivas.
Problemas resueltos
-
Al llamar a
Document#as_documenten un documento congelado en Rubinius, se devuelven los atributos en lugar de nulo. -
#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 eliminar valores de una matriz utilizan un $set en el contenido actual de la matriz, no en los nuevos valores.
-
#1546 Los cambios sucios deben devolverse en un hash con acceso indiferente.
-
#1542 La carga ansiosa ahora respeta las opciones (es decir, omitir, limitar) proporcionadas a los criterios cuando se obtienen las asociaciones.
-
#1530 No duplique valores agregados a matrices a través del seguimiento sucio si la matriz es un campo de clave externa.
-
#1529 Llamar a
unscopeden asociaciones relacionales ahora funciona correctamente. -
#1524 Permitir el acceso a las relaciones en los establecedores de campos anulados mediante la configuración previa de valores predeterminados de clave externa.
-
#1523 Permitir la desactivación de observadores mediante
disable. (Jonas Schneider) -
#1522 Se corrigió la tarea de creación de índices para Rails 3.2. (Gray Manley)
-
#1517 Se corrigieron los documentos Mongoid para que funcionen correctamente con el stub_model de RSpec. (Tiago Rafael Godinho)
-
#1516 No duplique muchos documentos relacionales en el enlace.
-
#1515 Mongoid ya no intenta serializar campos personalizados según criterios complejos de forma predeterminada.
-
#1503 Tiene muchas sustituciones de relaciones y ahora maneja cualquier tipo de combinación de documentos existentes y nuevos.
-
#1502 Los atributos anidados en los documentos incrustados respetan si el niño es paranoico.
-
#1497 Utiliza el mensaje proporcionado al fallar la validación de unicidad. (Justin Etheredge)
-
#1491 Devuelve nulo si no hay ningún valor predeterminado establecido en los campos localizados. (Tiago Rafael Godinho)
-
#1483 El módulo de envío incluye en tiempo de ejecución que agrega nuevos campos a un documento principal y también hace que los campos se agreguen 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 campos serializados internos de Mongoid se renombraron a Internos para no entrar en conflicto con las clases principales de Ruby en tipos serializables personalizados.
-
#1479 ¡No duplique identificadores en muchos a muchos cuando utilice create o create!
-
#1469 Cuando extract_id devuelve nulo, saca el documento del mapa de identidad mediante 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 por lotes ahora tienen como ámbito la colección para evitar la persistencia de documentos en otras colecciones en devoluciones de llamadas que van al lugar equivocado.
-
#1462 La asignación tiene muchas relaciones a través de atributos anidados
*_attributes=no guarda automáticamente 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 ejecutar la función "destruir" en cualquier documento, ahora se marca temporalmente como marcado para destrucción hasta que se complete la operación. (Nader Akhnukh)
-
#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 ¿incrustado? debe devolver verdadero cuando la relación se define como cíclica.
-
#1433 Los atributos anidados polimórficos para los atributos relacionales e incrustados 1-1 ahora se actualizan correctamente.
-
#1426 Los documentos congelados ahora se pueden clonar. (aagrawal2001)
-
#1382 Se genera un error al crear índices mediante la 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 concat en matrices integradas en su propio método para manejar el procesamiento por lotes debido a problemas de ejecución posteriores a la devolución de llamada.
-
#1366 Los valores de matriz y hash ahora se copian en profundidad para el seguimiento sucio.
-
#1359 Proporciona la capacidad de no tener un alcance predeterminado aplicado a todos los alcances nombrados mediante el uso de lambdas.
-
#1333 Se corrigieron errores con tipos personalizados existentes en espacios de nombres. (Peter Gumeson)
-
#1259 Los valores predeterminados se tratan como sucios si difieren del estado de la base de datos.
-
#1255 Asegúrese de que los documentos incrustados respeten el alcance predeterminado definido.
2.3.4
-
#1445 Evita documentos duplicados en la matriz cargada en el enumerable de destino para asociaciones relacionales.
-
#1442 Cuando se utilizan métodos create_ para relaciones has one, ahora se llaman los métodos destructivos apropiados al reemplazar un documento existente.
-
#1431 El contexto enumerable debe agregarse a la matriz cargada después del rendimiento, de modo que los métodos como #any? que hacen cortocircuito en función del valor del bloque no tengan documentos adicionales falsamente.
-
#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 números enteros en claves externas donde el id se define como un int.
-
#1397 No agregue criterios de clasificación predeterminados primero si ya existen criterios de clasificación.
-
#1394 ¿Existe una solución? Para que funcione cuando el conteo 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 Se corrige la conversión en lectura para campos serializables que están subclasificados.
-
#1357 Los conjuntos atómicos retrasados de update_attributes en documentos incrustados de múltiples niveles de profundidad ahora 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 nulo inverso se permite nuevamente en documentos incrustados.
-
#1208 No persista automáticamente los documentos secundarios a través del establecedor cuando se configura desde un embedded_in.
-
#791 El documento raíz actualiza sus marcas de tiempo cuando solo han cambiado los documentos incrustados.
2.3.3
Problemas resueltos
-
#1386 Se redujo la dependencia de mongo/bson a 1.3
-
#1377 Se corrigieron las funciones de agregación para que gestionen correctamente los valores nulos o indefinidos. (Maxime García)
-
#1373 Advertir si un ámbito anula otro ámbito.
-
#1372 Nunca persista al vincularse dentro de un atributo de lectura para validación.
-
#1364 Se corrigió la recarga de documentos con identificadores de objetos distintos de bson.
-
#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 Se corrigió el error de tipo en la sincronización de muchos a muchos cuando inverse_of se establece en nulo.
-
Ahora la función #1356 $in se puede encadenar a criterios no complejos en la misma clave sin errores.
-
#1350, #1351 Se corrigieron errores en las conversiones de cadenas de comillas dobles y tilde al parametrizar claves.
-
#1349 Los documentos Mongoid no deberían explotar al incluir Enumerable. (Jonas Nicklas)
2.3.2
Problemas resueltos
-
#1347 Se corrigen los comparadores integrados 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 Asegúrese de que las devoluciones de llamadas de destrucción se ejecuten en elementos secundarios en cascada cuando se eliminan a través de atributos anidados.
-
#1324 La configuración
inverse_of: nilen una referencia de varios a varios a la misma clase devuelve nil para la clave externa inversa. -
#1323 Permite tanto cadenas como símbolos como identificadores en la matriz de atributos para atributos anidados. (Michael Wood)
-
#1312 La configuración de un registrador ahora acepta cualquier cosa que emita un sonido similar a un registrador.
-
#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úrese de que todos los modelos se carguen en las tareas de rake, de modo que incluso en el modo seguro para subprocesos se puedan crear todos los índices.
-
#736 Ahora llamar a #reload en documentos incrustados funciona correctamente.
2.3.1
Problemas resueltos
-
#1338 Al llamar a #find en un ámbito o relación se verifica que el documento en el mapa de identidad coincida realmente con otros parámetros de ámbito.
-
#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 El objetivo enumerable al que se hace referencia 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 solucionó la limitación de versiones máximas con el control de versiones.
-
#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 temporal. -
#1002 Verifique los identificadores de bson legales al intentar la conversión.
-
#920 Permitir que las relaciones se denominen objetivo.
-
#905 Devuelve el nombre de clase normalizado en los metadatos si la cadena se definió con un prefijo ::.
-
#861 accepts_nested_attributes_for ya no es necesario para configurar documentos incrustados a través de un hash o una matriz de hashes directamente.
-
#857 Se corrigió el encadenamiento de relaciones dependientes cuando el documento base es paranoico.
-
#768 Se corrigieron las definiciones de atributos de clase 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 Rails. (Caio Filipini)
-
#1228 Permite el preformateo de claves compuestas pasando un bloque a #key. (Ben Hundley)
-
#1222 Ahora se admite la asignación masiva con alcance. (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 a los desarrolladores crear sus propios criterios complejos personalizados. (Ryan Ong)
-
Mongoid ahora incluye todos los campos definidos en los resultados
serializable_hashyto_jsonincluso si los campos no tienen valores para que los clientes ActiveResource sean más fáciles de usar los documentos serializados. -
Ahora el soporte para el operador $and de MongoDB está disponible en la forma:
Criteria#all_of(*args)donde args son múltiples expresiones hash. -
#1250, #1058 Los documentos incrustados ahora pueden tener sus devoluciones de llamadas activadas en un guardado principal configurando
:cascade_callbacks => trueen la relación. (pyromanic, Paul Rosania, Jak Charlton)
Cambios importantes
-
Mongoid ahora depende del modelo activo 3.1 y superior.
-
Mongoid ahora depende del controlador Mongo Ruby 1.4 y superior.
-
Mongoid requiere MongoDB 2.0.0 y superior.
Problemas resueltos
-
#1308 Alcance fijo de búsquedas HABTM.
-
#1300 Los modelos con espacios de nombres deben manejar la incrustación recursiva correctamente.
-
#1299 Los documentos autorreferenciados 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 ser parte de 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)
-
#1244 Tiene una relación que ahora se adhiere al comportamiento dependiente predeterminado.
-
#1225 Se corrigió la persistencia retrasada de los documentos incrustados a través de $set.
-
#1166 No cargue la configuración en Railtie si no hay variables de entorno definidas. (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 al clonar si existían versiones.
-
#763 No fusione matrices de criterios $in al encadenar ámbitos con nombre.
-
#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.
-
#582 Las relaciones cíclicas no incrustadas ahora validan la unicidad correctamente.
-
#484 La validación de unicidad con múltiples ámbitos de todos los tipos ahora funciona correctamente.
-
La eliminación de versiones creadas con
Mongoid::Versioningya no activa la cascada dependiente en las relaciones.
2.2.5
-
Este fue un pequeño lanzamiento de parche para abordar los errores 2.2.x de Heroku durante la compilación de activos.
2.2.4
-
#1377 Se corrigieron las funciones de agregación para que gestionen correctamente los valores nulos o indefinidos. (Maxime García)
-
#1373 Advertir si un ámbito anula otro ámbito.
-
#1372 Nunca persista al vincularse dentro de un atributo de lectura para validación.
-
#1358 Se corrigió el error de tipo en la sincronización de muchos a muchos cuando inverse_of se establece en nulo.
-
Ahora la función #1356 $in se puede encadenar a criterios no complejos en la misma clave sin errores.
-
#1350, #1351 Se corrigieron errores en las conversiones de cadenas de comillas dobles y tilde al parametrizar claves.
-
#1349 Los documentos Mongoid 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 los documentos incrustados a través de $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 una dependencia de 1.3.x del controlador Ruby de Mongo. Los usuarios ahora pueden usar de 1.3.x a 1.4.x.
2.2.1
Problemas resueltos
-
#1210, #517 Permite que las consultas de relación de documentos incrustados utilicen 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 los documentos principales desde los documentos incrustados en las devoluciones de llamadas after_destroy.
-
#1191 Los métodos del grupo de contexto (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 problemas de rendimiento en el acceso a campos hash y de matriz al leer varias veces.
-
#1218 Se corrigieron problemas con las relaciones que hacían referencia a modelos con claves externas enteras.
-
#1219 Se corrigieron varios problemas de modificaciones conflictivas al insertar y extraer elementos del mismo documento incrustado en una sola llamada.
-
#1220 Los metadatos no deben sobrescribirse con nil durante el enlace.
-
#1231 Se cambió el nombre de la clase de conjunto atómico de Mongoid a Sets para evitar conflictos con el conjunto nativo de Ruby después de la inclusión del documento.
-
#1232 Se corrige el acceso a los modelos relacionados durante las devoluciones de llamadas before_destroy al conectar en cascada.
-
#1234 Se solucionaron los problemas de sincronización de clave externa de HABTM al destruir documentos.
-
#1243 Las relaciones polimórficas no se convierten en identificadores de objeto cuando se consulta si los identificadores están definidos 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 incluye carga diligente en formato
Criteria#includes(*args). Esto funciona con asociaciones has_one, has_many y belong_to, y requiere que el mapa de identidad esté habilitado para funcionar. Configureidentity_map_enabled: trueen sumongoid.yml. Ejemplo:Person.where(title: "Sir").includes(:posts, :game) -
Las relaciones ahora pueden tomar un módulo como valor para la opción
:extend. (Roman Shterenzon) -
Se pueden crear colecciones limitadas 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 alias aDocument#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 #1173 has_many ya no eliminan todos los documentos de un conjunto de la relación (= [doc_one, doc_two]), sino que miran la opción dependiente para determinar qué comportamiento debería ocurrir. :delete y :destroy se comportarán como antes, :nullify y ninguna opción especificada anularán los documentos antiguos sin eliminarlos.
-
#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/al intentar convertir a identificadores de objeto según los criterios. -
#1176 Los objetivos enumerables siempre deben devolver primero los documentos en memoria al llamar
#first -
#1175 Asegúrese de que ambos lados de las relaciones de muchos a muchos estén sincronizados durante la creación.
-
#1172 Las relaciones enumerables referenciadas ahora manejan 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 las devoluciones de llamadas 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 Se corrigió la configuración de metadatos en las relaciones
belongs_to. -
#1145 La inversión de metadatos debe devolver
nilsiinverse_ofse estableció comonil. -
#1139 Los objetivos enumerables ahora se procesan como matrices.
-
#1136 Establecer el padre
belongs_toennilya no elimina el padre. -
#1120 No llame a
in_memoryen las relaciones si no responden. -
#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 solo
embedded_incon múltiples definiciones principales.
2.1.8
Problemas resueltos
-
#1148 Se corrigió
respond_to?en todas las relaciones para que regrese correctamente. -
#1146 Se agregó nuevamente la verificación de campos destructivos de Mongoid al definir campos.
-
#1141 Se corrigieron las conversiones de valores
nilen los criterios. -
#1131 Mongoid/Kaminari verificados paginando correctamente.
-
#1105 Se corrigió el consumidor de actualización atómica fija para que tenga como alcance la clase.
-
#1075
selfen lambdas y procedimientos predeterminados ahora hace referencia a la instancia del documento. -
#740 Se eliminó el parámetro de configuración
embedded_object_id. -
#661 Se corrigió 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
Este fue un lanzamiento específico para corregir las fallas de MRI 1.8.7 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 de matriz ahora se marcan correctamente como sucios al acceder y cambiar.
-
#656 Se solucionó la ruptura de relaciones al recargar al desconfigurar asociaciones ya cargadas.
-
#647 Prefiere
#unseta#remove_attributepara eliminar valores. -
#290 Verificar inserciones 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 memorice 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 El atributo de actualización rastrea adecuadamente los cambios de la matriz.
2.1.4
Este fue un lanzamiento específico para obtener una gemspec generada por Psych para que no ocurrieran más errores de análisis en aquellos rubíes que usaban el nuevo analizador YAML.
2.1.3
Problemas resueltos
-
#1109 Se corrigieron las validaciones que no cargaban uno a uno en la memoria.
-
#1107 Mongoid ya no quiere el
mongoid/railtierequerido 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 Se corrigió la coincidencia de criterios de matriz en documentos incrustados.
-
#1028 Implementar con alcance en relaciones de uno a muchos y de muchos a muchos.
-
#988 La eliminación de muchos a muchos 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 anule
Document#attributes. -
#893 Verifique que el recuento no 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 que utilizan sus claves para representar su valor de cadena.
-
#721
#safelyahora genera correctamente errores de validación cuando ocurren.
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 matrices. -
#1047 Ignorar los valores
nilpasados aembeds_manenvíos 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 soportar adecuadamente las operaciones atómicas
#bity#rename. -
Se ha eliminado la compatibilidad con esclavos tradicionales de Mongoid. Se deben usar conjuntos de réplicas en lugar de las 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 trae consigo muchas correcciones de errores y cambios:
-
#756 Después de las devoluciones de llamadas y los observadores, se ve lo que se cambió en lugar de que los cambios recién realizados 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 el modo de desarrollo ahora tiene como valor predeterminado
false. -
:autosave => trueEn las asociaciones relacionales ahora se ahorra en la actualización y la creación. -
Mongoid ahora cuenta con un mapa de identidad para consultas
find_by_idsimples. Consulte la documentación en el sitio web.
Nuevas características:
-
#1067 Los campos ahora aceptan un atributo
:versionedpara poder deshabilitar qué campos están versionados conMongoid::Versioning. (Jim Benton) -
#587 Se agregó preferencia de orden a las asociaciones "muchos" y "muchos a muchos". (Gregory Man)
-
Se añadió la capacidad de encadenar declaraciones
order_by. (Gregory Man) -
#961 Permite que opciones arbitrarias
Mongo::Connectionpasen a través del objetoMongoid::Config::Database. (Morgan Nelson) -
Habilite
autosavepara referencias múltiples. (Dave Krupinski) -
Se han agregado las siguientes operaciones atómicas explícitas:
Model#bit,Model#pop,Model#pull,Model#push_all,Model#rename,Model#unset. -
Se añadieron traducciones excepcionales para hindi. (Sukeerthi Adiga)
Problemas resueltos
-
#974 Corrige
attribute_present?para que funcione correctamente, entonces el valor del atributo esfalse, gracias a @nickhoffman. (Gregory Man) -
La tarea960 de creación de índices no reconoce muchos modelos mongoid porque tiene problemas para adivinar sus nombres de modelo a partir de los nombres de archivo. (Tobias Schlottke)
-
#874 Eliminar desde una referencia MM es unilateral. (nickhoffman, davekrupinski)
-
Reemplazar el obsoleto
class_inheritable_hasheliminado 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 Se corrige la serializació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 establece enfalsey se carga un documento incrustado con un campo no reconocido, se genera 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 predeterminados. -
Mongoid::Fields.defaultsSe memoriza para una instanciación más rápida de los modelos.