Visão geral

Para obter instruções sobre como atualizar para versões mais recentes, visite mongoid.org.

A partir da versão 5.0.2, consulte as versões do Github para obter registros de alterações.

5.0.1

Problemas resolvidos

5.0.0

Principais alterações (incompatíveis com versões anteriores)

  • O Mongoid agora usa o mongo Ruby Driver 2.x oficial em vez do Moped.

  • A maioria das opções de configuração específicas do driver foi alterada, consulte aqui para as novas opções.

  • Todas as referências a session foram agora substituídas por client. Isso inclui a configuração do mongoid.yml, as opções store_in e todas as exceções e módulos com Session no nome.

  • find_and_modify foi removido e substituído por 3 opções: find_one_and_update, find_one_and_delete e find_one_and_replace.

  • text_search foi removido, pois agora é uma opção $text em uma query de 2.6 em diante.

  • O Mongoid não é mais compatível com o MongoDB 2.2 - o suporte agora é apenas para 2.4 e superior.

  • #3768 first e last não adicionam mais uma classificação _id quando nenhuma opção de classificação foi fornecida. Para garantir que um documento seja o primeiro ou o último, ele precisa agora conter uma classificação explícita.

  • Document#deleted? o alias foi removido, continue usando Document#destroyed?.

Novas funcionalidades

  • #4016 Permitir configuradores privados e protegidos em campos para operações atômicas. (Rob Smith)

  • #3985 Retornar nulo ao usar {upsert: true} em find_and_modify (Adrien Siami)

  • #3963 Permitir que as IDs de objeto JSON estendidas sejam passadas para find.

  • #3846 Permitir #pluck quando nenhum for usado nos critérios. (Braulio Marques)

Problemas resolvidos

  • #4091 Use o contexto da subclasse ao chamar um escopo definido em uma superclasse. (EdgarsBeigurts)

  • #4075 Registro de remoção de índice específico para cada índice que estava sendo removido.

  • #4071 Corrigiu o carregamento de relação enumerável para verificar os documentos adicionados ao iterar.

  • #4077 Muitas relações agora incluem Enumerable.

  • #4052 Validação de exclusividade corrigida em campos localizados sem valor.

  • #4033 Foram removidos todos os usos do operador posicional $ em atualizações atômicas.

  • #4030 Exceções de duplicação/clone incluem atributos dinâmicos automaticamente.

  • #4005 Inclusão corrigida do mongoid com componentes Rails que não têm o ambiente Rails.

  • #3993 Corrige o problema em que dup/clone falha em documentos incorporados que usam store_as sem usar Mongoid::Atributes::Dynamic

  • #3991 Corrigiu os documentos incorporados que não eram sinalizados como alterados após chamar #changed? e modificar os elementos filhos.

  • #3874 Adicionando opção de snapshot ao contexto.

  • #3868 Modelos de carregamento em tarefas de rastelo agora expandem o caminho do Rails.

  • #3764 Verificação de declaração de caso corrigida para destinos enumeráveis.

  • #3740 Corrige o erro Missing attribute: '_id' ao usar métodos apenas ou sem (dx7)

  • #3631 Corrige o problema em que a chamada de chamada de resposta before_save pode ser chamada duas vezes após a criação de um filho

  • #3599 aplicação corrigida de escopos padrão da superclasse em subclasses.

  • #3104 Corrigiu alvos enumeráveis para verificar o primeiro/último na ordem adequada.

4.0.2

Novas funcionalidades

  • #3931 Adicione #find_or_create_by! método para muitas associações. (TomBeynon)

  • #3731 Adicione find_by! método. (Guillermo Iguará)

Problemas resolvidos

  • #3722 Use o nome correto do banco de dados de dados ao combinar #store_in e #with. (Arthur Novidades)

  • #3934 Não aplique classificação ao fazer find_by. (Arthur Novidades)

  • #3935 corrige vários campos com classificação na memória contextual. (chamnap)

  • #3904 BSON::Document#symbolize_keys deve retornar chaves como símbolos. (Arthur Novidades)

  • #3948 Corrija remove_undefinited_indexes nas grades 4.2 para simbolizar corretamente as chaves do Documento. (Adam Wróbel)

  • #3626 Document#to_key, precisa retornar um ObjectId como string para que possamos fazer a query de volta usando esse ID. (Arthur Novidades)

  • #3888 create UnknownAttributeError quando "set" é chamado em um campo não existente e o Mongoid::Attributes::Dynamic não está incluído no modelo. (Shweta Kale)

  • #3889 "set" permitirá definir o valor do campo não existente quando Mongoid::Attributes::Dynamic estiver incluído no modelo. (Shweta Kale)

  • #3812 Contexto de validação fixo ao salvar (Yaroslav Zemlyanuhin)

4.0.1

Problemas resolvidos

  • #3911 Corrija as relações denominadas "principal". (nkriege)

  • #3792/#3881 Corrige muitas chamadas internas para #_id em vez de #id para evitar problemas ao sobrecarregar #id (Gauthie Delacroix)

  • #3847 Corrigir o resultado 'QueryCache#get_more', quando a coleção tem mais documentos do que o primeiro lote de consulta. (Angelica Korsun)

  • #3684 Não eleve o DissingAttributeError ao usar um escopoonly(). (Arthur Novidades)

  • # O método pluck3703 não deve compactar os valores. (Arthur Novidades)

  • #3773 Use nanossegundos para o registro de data e hora cache_key em vez de segundos simples. (Máximo Mussini)

4.0.0

Principais alterações (incompatíveis com versões anteriores)

  • #3320 Remove dependências do Rails das tarefas de banco de dados de dados. (Arthur Novidades)

    Todas as tarefas de coleta de db:* devem funcionar como antes ao usar o Rails. Quando não estiver em um Rails, basta carregar as tarefas do banco de dados de dados usando:

    load 'mongoid/tasks/database.rake'
    
  • O Mongoid 4 agora oferece suporte apenas ao MongoDB 2.4.0 e superior.

  • Document#metadata foi renomeado para Document#relation_metadata para evitar conflitos comuns. Os proxies de relação também foram renomeados para o mesmo.

  • Escopos e escopos padrão agora devem ser todos definidos dentro de lambdas ou procs.

  • skip_version_check a opção de configuração foi removida.

  • IdentityMap removido. (Arthur Novidades)

  • Retrabalho de carga ávida. A carga ávida agora não precisa do mapa de identidade para carregar documentos relacionados. Um conjunto de pré-carregadores pode carregar aguardando as associações passadas para .includes método. (Arthur Novidades)

  • O Mongoid agora suporta as novas preferências de leitura que os drivers principais fornecem. Esses incluem:

    • :primary: sempre lerá a partir de um nó primário. (padrão)

    • :primary_preferred: tente um primário primeiro e, em seguida, um secundário se não houver nenhum disponível.

    • :secondary: sempre lerá de um nó secundário.

    • :secondary_preferred: tente um secundário primeiro e, em seguida, o primary se não houver nenhum disponível.

    • :nearest: tenta ler a partir do nó com a menor latência.

    sintaxe de amostra :

    Person.with(read: :secondary).first
    

    A opção :consistency não é mais válida, use a opção :read agora.

  • O Mongoid agora padroniza todas as gravações para propagar (anteriormente " modo de segurança") e agora tem semântica de propagação diferente:

    • { w: -1 }: Não verifique gravações e não gere erros de rede.

    • { w: 0 }: Não verifique gravações e gere erros de rede.

    • { w: 1 }: verificar gravações no nó primário. (padrão)

    • { w: n }: verificar gravações em n de nós.

    • { w: "majority" }: verificar gravações na maioria dos nós.

    sintaxe de amostra :

    Person.with(write: {w: :majority}).create!(name: "John")
    

    A opção :safe não é mais válida utilize a opção :write agora.

  • #3230 Os campos de Array e Hash agora validam que os tipos corretos estão sendo definidos, em vez de permitir qualquer valor. (Rodrigo Saito)

  • #3043/#2949 Retrabalho nas partes internas das opções de persistência. (Arthur Novidades)

  • O Mongoid agora requer o Active Model 4 ou superior.

  • Document#set agora aceita vários atributos na forma de um hash, em vez dos argumentos (field, value) anteriores. Aliases de campo e typecasting também são agora suportados nesta operação.

    document.set(name: "Photek", likes: 10000)
    
  • Document#rename agora aceita vários atributos na forma de um hash, em vez dos argumentos (field, value) anteriores. Os nome alternativos de campo são aceitos.

    document.rename(first_name: "fn", last_name: "ln")
    
  • Document#inc agora aceita vários atributos na forma de um hash, em vez de anteriormente só poder incrementar um valor de cada vez. Aliases e serialização são suportados.

    document.inc(score: 10, place: -1, lives: -10)
    
  • Document#pop agora aceita vários atributos na forma de um hash, em vez de anteriormente só poder exibir um valor de cada vez. Aliases e serialização são suportados.

    document.pop(names: 1, aliases: -1)
    
  • Document#bit agora aceita vários atributos na forma de um hash, em vez de anteriormente só poder aplicar um conjunto de operações por vez. Aliases e serialização são suportados.

    document.bit(age: { and: 13 }, score: { or: 13 })
    
  • Document#pull agora aceita vários atributos na forma de um hash, em vez de anteriormente só poder extrair um valor de cada vez. Aliases e serialização são suportados.

    document.pull(names: "James", aliases: "007")
    
  • Document#pull_all agora aceita vários atributos na forma de um hash, em vez de anteriormente só poder extrair um valor de cada vez. Aliases e serialização são suportados.

    document.pull_all(names: ["James", "Bond"], aliases: ["007"])
    
  • Document#push_all foi removido desde que ficou obsoleto no MongoDB 2.4. Use Document.push em vez disso.

  • Document#push agora aceita vários atributos na forma de um hash e pode lidar com o envio de valores únicos ou múltiplos valores para o campo via $push com $each. Aliases e serialização são suportados.

    document.push(names: "James", aliases: [ "007", "Jim" ])
    
  • Document#add_to_set agora aceita vários atributos na forma de um hash, e agora aliases e serialização são suportados.

    document.add_to_set(names: "James", aliases: "007")
    
  • A API de operações atômicas de critérios agora foi alterada para corresponder às alterações na API atômica de documento único, por exemplo:

    Band.where(name: "Depeche Mode").inc(likes: 10, followers: 20)
    
  • #3399 #create e #create! em relações agora pode usar uma array de atributos como o primeiro parâmetro para criar vários documentos de uma só vez.

    person.addresses.create([{ street: "Bond" }, { street: "Upper" }])
    person.addresses.create!([{ street: "Bond" }, { street: "Upper" }])
    
  • #3141 rake db:test:prepare agora configura todos os índices definidos se Mongoid for o único ODM/ORM no ambiente.

  • #3138 update_attributes agora pode ser acessado simplesmente ligando para update.

  • #3083 Uma nova tarefa de varredura: rake db:mongoid:remove_undefined_indexes foi adicionada para remover índices do banco de banco de dados que não estão explicitamente definidos nos modelos. (Aidan Feldman)

  • #3029 O campo relation_field que é adicionado para um único caso de uso com relações polimórficas foi removido. Então, onde o seguinte funcionaria antes:

    class Eye
      include Mongoid::Document
      belongs_to :eyeable, polymorphic: true
    end
    
    class Face
      include Mongoid::Document
      has_one :left_eye, class_name: "Eye", as: :eyeable
      has_one :right_eye, class_name: "Eye", as: :eyeable
    end
    

    Isso agora precisaria ser modelado como (com a migração apropriada):

    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_attribute agora chama corretamente o método setter em vez de usar write_attribute.

  • #3060 Permitir que os blocos atomicamente permitam várias chamadas do mesmo tipo. (BriaonNorton)

  • # Os índices de modelo3037 não são mais armazenados em um hash index_options na classe de modelo. Em vez disso, agora existe uma array denominada index_specifications na classe que contém uma lista de objetos Indexable::Specification . Isso é para que possamos lidar adequadamente com o caso de índices com as mesmas chaves, mas em ordem diferente.

  • #2956 O cache de queries agora só acontece quando cache é especificamente chamado. (Arthur Novidades)

  • #2659 Mongoid::Railtie agora usa corretamente apenas um inicializador e o nome foi alterado para mongoid.load-config.

  • #2656 rake db:reseed agora é rake db:reset (ArthurNeves)

  • #2648 Boolean se torna Mongoid::Boolean para evitar a poluição do namespace global com uma classe comumente usada por outras bibliotecas.

  • #2603 Os valores de retorno dos configuradores agora são sempre o valor definido, independentemente de chamar o configurador ou usar enviar.

  • #2597 Mongoid::Observer foi removido de acordo com Rails 4.

  • #2563 A opção de configuração allow_dynamic_fields foi removida, pois os campos dinâmicos agora são permitidos em um nível por modelo. Para permitir que um modelo use campos dinâmicos, basta incluir o módulo em cada um. (JoshMartin)

    class Band
      include Mongoid::Document
      include Mongoid::Attributes::Dynamic
    end
    
  • #2497 A chamada to_json não altera mais o valor de retorno do driver, e a função adequada retorna { "$oid" : object_id.to_s } em vez de apenas a representação de string anterior.

  • #2433 Mongoid::Paranoia foi removido.

  • #2432 Mongoid::Versioning foi removido.

  • #2218 A criação ou a instanciação de documentos com escopos padrão agora aplicará o escopo padrão ao documento, se o escopo não for complexo.

  • # A segurança de atribuição em massa2200 agora espelha o comportamento do Rails 4. A opção without_protection também foi removida. O método de classe attr_accessible foi removido. Os parâmetros Mongoid e Forte devem funcionar bem para proteção de atribuição em massa.

  • delete_all e destroy_all não usam mais um hash :conditions , mas apenas os atributos brutos.

  • #1908 Documentos agora carregados a partir de critérios que usam #only ou #without agora gerarão um erro ao tentar salvar, atualizar ou excluir esses registros. Além disso, os campos excluídos dos campos recuperados do banco de dados de dados também gerarão uma exceção ao tentar acessá-los.

  • #1344 As atualizações atômicas agora podem ser executadas em um bloco atomically , o que atrasará as atualizações atômicas no documento em que o bloco foi chamado até que o bloco seja concluído.

    As chamadas de atualização podem ser executadas normalmente no bloco:

    document.atomically do
      document.inc(likes: 10)
      document.bit(members: { and: 10 })
      document.set(name: "Photek")
    end
    

    O documento também é cedido ao bloco:

    document.atomically do |doc|
      doc.inc(likes: 10)
      doc.bit(members: { and: 10 })
      doc.set(name: "Photek")
    end
    

    Os comandos atômicos têm uma interface fluída:

    document.atomically do |doc|
      doc.inc(likes: 10).bit(members: { and: 10 }).set(name: "Photek")
    end
    

    Se a interface fluída for aproveitada sem o bloco atomically , as operações persistirão em chamadas individuais. Por exemplo, o seguinte atingiria o banco de dados de dados 3 vezes sem o bloqueio fornecido:

    doc.inc(likes: 10).bit(members: { and: 10 }).set(name: "Photek")
    

    O bloqueio só é válido para 1 documento por vez, portanto, as atualizações de documento incorporados e raiz não podem ser misturadas no momento.

Novas funcionalidades

  • O Mongoid agora usa o ActiveSupport::LogSubscriber para assinar registros e o ActiveSupport::Notifications para enviar registros de operações. (ArthurNeves) Exemplo de assinatura de registro :

    ActiveSupport::Notifications.subscribe('query.moped') fazer | evento| .. fim

  • Os tipos de campo agora podem usar símbolos, bem como nomes de classe . Consulte: github.com/mongoid/mongoid/blob/master/lib/mongoid/fields.rb#L16 para os mapeamentos disponíveis.

  • #3580 Campos agora podem ser redefinidos para seus valores padrão, com os métodos:

    document.reset_name_to_default!

  • # Os documentos3513 agora têm um método #destroy! que gerará um erro Mongoid::Errors::DocumentNotDestroyed se uma chamada de resposta de resposta destruída retornar um valor falso.

  • #3496 Adicionado nível de classe e nível de critérios find_or_create_by!.

  • #3479 Mapear/reduzir agora respeita os critérios sem opções de tempo limite se a saída não estiver in-line.

  • #3478 Objetos de critério agora têm um método #none que fará com que os critérios nunca atinjam o banco de dados de dados e sempre tenham zero documentos.

    Band.noneBand.none.where(nome: "Tool") # Sempre tem zero documentos.

  • #3410 O Mongoid agora tem um cache de query que pode ser usado como middleware em aplicativos Rack. (Arthur Novidades)

    Para Trilhos:

    config.middleware.use(Mongoid::QueryCache::Middleware)

  • # Os contadores3319 agora podem ser redefinidos a partir de uma instância de documento :

    documento.reset_counters(:relation)

  • #3310 As relações embedded_in agora aceitam uma opção touch para atualizar os pais.

  • #3302 A criação de nomes alternativos usando alias_attribute agora trata adequadamente os aliases nos critérios.

  • # O campo de faixa3155 persistirá o exclude_end quando fornecido. (Daniel Libanori)

  • #3146 Adição da opção de campo :overwrite, quando for verdadeiro, não verificará duplicatas. (Daniel Libanori)

  • #3002 Recarregar o console do Rails também limpará o mapa de identidade do Mongoid.

  • #2938 Foi adicionada uma opção de configuração duplicate_fields_exception que, quando definida como true , gerará uma exceção ao definir um campo que substituirá um método existente. (Arthur Novidades)

  • #2924 MongoDB 2.4 texto beta O Atlas Search agora tem um DSL fornecido pelo Mongoid. Como outras consultas, as pesquisas de texto são avaliadas de forma lenta e estão disponíveis fora do nível de classe ou critério.

    Observe que qualquer joia de terceiro 3que forneça um método text_search não funcionará mais com o Mongoid e precisará alterar sua sintaxe. Exemplos:

    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 Várias extensões agora podem ser fornecidas a relações. (Daniel Libanori)

Problemas resolvidos

  • #3676 Faça o pluck funcionar com associações incorporadas (ArthurNeves)

  • #2898 Métodos de atributo sujo agora manipulam adequadamente os aliases de campo . (Nellas Ganser)

  • #3620 Adicionar métodos de instância do módulo ActiveModel à lista returned_methods. (Arthur Novidades)

  • #3610 Não permitir operações atômicas em atributos somente leitura (Frederico Armaujo)

  • #3619 Não valide documentos sinalizados para destruição. (Crisptopher J. Bottaro)

  • #3617 Não pule a criação de índice em documentos cíclicos. (shaiker)

  • #3568 Corrigido o erro de atributos ausentes nos campos localizados presentes.

  • #3514 Corrigiu o cache de query para trabalhar na primeira/última chamada.

  • #3383/#3495 Corrija o carregamento rápido de has_and_belongs_to_many. (Arthur Novidades)

  • #3492 operações $rename não devem mongoizar valores. (Vladislav melanitskiy)

  • #3490 Permite que campos localizados funcionem com valores booleanos false .

  • #3487 Mapear Boolean para Mongoid::Boolean em definições de campo . (Arthur Novidades)

  • # O toque3449 precisa funcionar para criação e atualização. (Greggory Rothmeir)

  • #3347 Criar documentos fora dos escopos para relações incorporadas agora define corretamente o documento pai nos filhos criados.

  • #3432 Corrigiu a mongoização da perda de precisão do DateTime.

  • #3397 O combinador $ne para documentos incorporados foi corrigido para corresponder ao comportamento do servidor .

  • #3352 Permitir que escopos nomeados chamados "abertos" trabalhem por meio de relações 1-n.

  • #3348 Correção de índices compostos com as mesmas chaves em direções diferentes. (Arthur Novidades)

  • #2701 Corrigindo query extra sobre a vinculação requires_to. (Arthur Novidades)

  • #3089 Permitir a desmongoização de strings para flutuantes (Daniel Libanori)

  • # O cache do contador3278 também deve atualizar o documento na memória. (Arthur Novidades)

  • #3242 A relação Has_many deve usar a foreign_key inversa. (Arthur Novidades)

  • #3233 Não faça chamadas double de validação de chamada quando houver filhos em cascata e a validação de relação estiver ativada.

  • #3197 Melhorias nas chamadas para aggregates em collections raiz e incorporadas. (Wojciech Pekutski)

  • #3144/#3219 Corrigindo a colisão de nomes em @_children ivar. (Arthur Novidades)

  • # O campo de faixa3088 pode aceitar um hash, que pode ser o atributo do banco de dados. (Daniel Libanori)

  • #3116 As variáveis de instância de relacionamento agora são todas prefixadas com _.

  • #3093 Somente nivele 1 nível ao empurrar arrays atomicamente.

  • #3063 Document#becomes agora define corretamente o objeto base em erros. (Adam Russ Coen)

  • #3019 As operações atômicas não tentarão mais persistir se o documento não for persistido.

  • #2903 A to_a extensão de string não utilizada foi removida.

3.1.7

Problemas resolvidos

  • #3465 Corrigiu erros de relação ambígua em que inverse_of é definido como nulo.

  • #3414 Opções de pulo e limite de backport na agregação. (Wojciech Pekutski)

  • #3469 Corrigir RegexpError: falha ao alocar memória: /./ on .hash_dot_syntax? (Dmitry Krasnoukhov)

3.1.6

Problemas resolvidos

  • #3337 Garantir que o mapa de campos localizados seja clonado com herança.

  • #3262 Corrigiu as operações de array atômica em campos de chave estrangeira do HABTM de transformar elementos únicos em arrays.

  • #3282 Corrigido .timeless opção de usar um local de thread em vez de um atributo de classe . Remova também os métodos atemporal de todos os Docs e adicione apenas aos Docs com registros de data e hora. (Arthur Novidades)

3.1.5

Problemas resolvidos

  • #3231 Permitir que a evolução dos documentos proxy funcione de acordo com os critérios.

  • #3247 Aumenta a dependência de tzinfo para 0.3.29.

  • #3203 index: true Especificação corrigida para relações polimórficas.

  • #3192 Campos com nome alternativo corrigidos + combinações de campos localizados com validação. (Johnny Escudos)

  • #3173 Corrigiu problemas em torno de muitas relações com chaves primárias personalizadas. (Bowem Sol)

  • # A atualização de3159 agora sinaliza corretamente documentos como persistentes.

  • #3137 Permite vários conjuntos belongs_to em uma linha com ids.

  • #3079 Docs incorporados com paranóia pais estavam perdem o _id ao recarregar do banco de dados, pois não tinham o direito persistente? valor. (Arthur Novidades)

  • #3081 O method_missing dos critérios agora verifica se uma array responde ao método fornecido antes de chamar entradas para não atingir o banco de dados de dados se um NoMethodError for gerado.

  • #3068 A especificação fixa é executada em portas não padrão do MongoDB se MONGOID_SPEC_PORT estiver definido.

  • #3047 Certifique-se de que blank? e empty? não caiam no método sem critérios.

  • Inclui updated_at em cache_key mesmo quando é um carimbo de data/hora curto (ArthurNeves)

3.1.4

Problemas resolvidos

  • #3044 Certifique-se de que os destinos enumeráveis correspondam às arrays nas declarações de caso.

  • #3034 first_or_create no critério agora passa corretamente o bloqueio para criar, em vez de chamar depois que o documento foi criado.

  • #3021 Removido o aviso mongoid.yml do inicializador, isso agora é tratado pelas opções de configuração da sessão.

  • # O validador de exclusividade3018 agora serializa corretamente os valores em sua verificação. (Jerry Clinehard)

  • #3011 Suporte de campo com alias corrigido para validação de exclusividade. (Johnny Escudos)

  • #3008 Corrigiu as subclasses que não podiam herdar os escopos corretamente quando o escopo é adicionado após o carregamento da classe . (Mike Dlon)

  • #2991 Document.timeless agora tem o escopo adequado para a instância e não para o thread.

  • #2980 Campos dinâmicos agora gerenciam adequadamente a edição no local de hashes e arrays. (Mateus Widmann)

  • #2979 pluck não modifica mais o contexto em vigor. (Bian Goff)

  • #2970 Corrigiu o cache do contador para usar corretamente o nome da relação, se disponível, e o segundo do nome da classe inversa, se não estivesse.

  • # Os atributos aninhados2959 agora respeitarão autosave: false se definidos na relação.

  • #2944 Validação de exclusividade fixa para campos localizados quando a distinção entre maiúsculas e minúsculas é verdadeira. (Vladimir Zhunova)

3.1.3

Problemas resolvidos

  • Não duplique documentos incorporados ao salvar após a chamada se tornar o método. (Arthur Novidades)

  • #2961 O recarregamento de uma configuração do mongoid.yml agora limpa corretamente as sessões configuradas anteriormente.

  • # As contagens2937 agora podem usar um argumento true para incluir o salto e o limite. (Arthur Novidades)

  • #2921 Não use o tipo na seleção do mapa de identidade se a herança não estiver em jogo. (Arthur Novidades)

  • #2893 A memoização do nome da coleção e do nome do banco de dados de dados foi removida para que as lambdas com store_in funcionem corretamente ao serem alteradas.

  • #2911 O atributo _destroy nas relações 1-n ao processar atributos aninhados agora pode ser uma string ou símbolo quando passada uma array.

  • #2886 Corrigiu o problema de namespace com os geradores Rails.

  • #2885 Toque fixo para campos com nomes alternativos. (Nellas Ganser)

  • #2883 Permitir que relações cíclicas não gerem erros de relação mista.

  • #2867 pluck agora lida adequadamente com campos com nomes alternativos.

  • # O salvamento automático2862 não executa mais queries desnecessárias. (Arthur Novidades)

3.1.2

Problemas resolvidos

  • #2851 Corrigiu a desmongoização do BigDecimal dos valores NaN. (nkem)

  • #2848 Corrigiu touch para funcionar ao usar carimbos de data/hora curtos. (Arthur Novidades)

  • #2840 Tratamento de opções no_timeout de ponta a ponta corrigido.

  • #2826 Os campos dinâmicos agora estão mongoizados corretamente.

  • #2822 A carga de relações do Marques agora reaplica adequadamente as extensões.

3.1.1

Problemas resolvidos

  • #2839 Validações corrigidas para usar o valor de conversão de tipo com exceção do validador de numericidade. (Lailson bandeira)

  • # As opções2838 store_in agora são mescladas corretamente em vez de substituir. (Colin MacKenzie)

3.1.0

Novas funcionalidades

  • O requisito mínimo do MongoDB agora foi aumentado para 2.2, pois agora dependemos da estrutura de agregação.

  • As dependências mínimas do Active Model e do Active Support foram aumentadas para 3.2.

  • #2809 As relações agora podem especificar uma chave primária para usar em vez da ID em chaves estrangeiras.

    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 Suporte a $geoNear foi adicionado aos critérios.

    Bar.where(:likes.gt => 1000).geo_near([ 52, 13 ])
    Bar.geo_near([ 52, 13 ]).max_distance(0.5).spherical
    
  • #2799 Critérios#map agora podem aceitar um símbolo de um nome de campo , bem como um bloco para executar um map mais otimizado. (Gosha Arinitch)

    Band.where(:likes.gt => 1000).map(:name)
    
  • #2798 Agregações (sum, min, max, avg) agora usam a estrutura de agregação em vez de mapa/redução. (Gosha Arinitch)

  • #2776 MongoDB 2.4.x novos tipos de índice agora são suportados: "2dsphere", "text" e "hashed". (Iracli Janeshvili)

  • #2767 $maxScan suporte da Origem agora é compatível. (Jonathan Hyman)

  • #2701 Limpeza de queries de banco de dados de dados excessivas com relações 1-1 .

  • #2693 Os nomes de coleções personalizadas podem ser passados para o gerador de modelos. (Subhash Bhushan)

    rails g model band --collection=artists
    
  • #2688 Model.create e Model.create! agora podem usar uma array de hashes de atributos para criar vários documentos de uma só vez. Se uma array de atributos for fornecida, uma array de documentos será retornada.

    Band.create([{ name: "Tool" }, { name: "Placebo" }])
    Band.create!([{ name: "Tool" }, { name: "Placebo" }])
    
  • #2670 A desconfiguração de campos agora aceita vários campos em vez de apenas 1. (Arthur Novidades)

    band.unset(:name, :founded)
    Band.where(name: "Placebo").unset(:members, :origin)
    
  • #2669 Passar um bloco para Criteria#new agora envia corretamente o bloco para o construtor do modelo. (Arthur Novidades)

  • #2667 exists? não atinge mais o banco de dados de dados nos casos em que temos as informações necessárias na memória.

  • #2665 Mongoid agora suporta um cache de contador para relações belongs_to . (Arthur Novidades)

    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 Documentos incorporados que têm relações belongs_to agora podem carregá-los com coleta antecipada.

  • #2657 Os métodos de conveniência de obtenção e preparação de registrador foram adicionados ao módulo Config . (Arthur Novidades)

  • # As opções de índice2615 agora podem receber um nome de banco de dados de dados específico se os índices existirem apenas em um banco de dados de dados diferente do padrão.

    class Band
      include Mongoid::Document
      index name: 1, { database: "another_db" }
    end
    
  • #2613 Procs agora pode ser fornecido como valores para store_in:

    class Band
      include Mongoid::Document
      store_in database: ->{ Thread.current[:database] }
    end
    
  • #2609 Passe pela opção batch_size para fazer query. (Martin Mauch)

  • #2555 Passar hashes para find quando o ID dos documentos é do tipo hash agora funciona corretamente. (Szymon Kucab)

  • #2545 O operador posicional $ é usado para atualizar seletores em documentos incorporados que têm nível 1 aninhado de profundidade, quando apropriado.

  • #2539 Mongoid.models agora rastreia todos os modelos no aplicação para uma determinações mais precisas dos modelos para coisas como indexar tarefas de varredura. (Ara Howard)

  • #2525 adicionada a capacidade de ter campos com registro de data e hora curtos com aliases. Isso define campos de carimbo de data/hora como c_at e u_at , que também são nomeados como created_at e updated_at por conveniência. (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 Documentos agora têm um attribute_before_type_cast para o tratamento adequado de validações. (Gerad Suyderhoud)

  • #2443 expire_after_seconds agora é uma opção de índice válida (http://www.mongodb.com/pt-br/docs/manual/core/indexes/#ttl-indexes, http://mongodb.com/pt-br/docs/manual/tutorial/expire-data/).

    class Event
      include Mongoid::Document
      field :created_at, type: DateTime
      index({ created_at: 1 }, { expire_after_seconds: 3600 })
    end
    
  • # As relações2373 com a opção touch: true agora serão tocadas automaticamente quando o documento filho for criado ou destruído.

  • Adicionados Document.first_or_create! e Criteria#first_or_create!. Isso gera um erro de validações se a criação falhar na validação.

    Band.where(name: "Depeche Mode").first_or_create!
    Band.where(name: "Tool").first_or_create!(active: true)
    
  • Adicionados Document.first_or_initialize e Criteria#first_or_initialize. É o mesmo que first_or_create , mas inicializa um novo documento (não persistente) se nenhum for encontrado.

    Band.where(name: "Depeche Mode").first_or_initialize
    Band.where(name: "Tool").first_or_initialize(active: true)
    
  • Adicionados Model.pluck e Criteria#pluck semelhantes aos do Active Record, que retorna uma array de valores para o campo fornecido. (JasonLee)

    Band.where(name: "Depeche Mode").pluck(:_id)
    Band.where(name: "Tool").pluck(:likes)
    
  • #2324 Incorpora muitas relações agora lida corretamente delete_if.

  • #2317 Adicionado Document.first_or_create e Criteria#first_or_create. Isso retornará o primeiro documento correspondente ou criará um com atributos adicionais se não existir. (incorvia)

    Band.where(name: "Depeche Mode").first_or_create
    Band.where(name: "Tool").first_or_create(active: true)
    
  • #2292 Adicionado Model.each_with_index.

  • #2285 Config.load_configuration agora é público para quem deseja instanciar as configurações diretamente de um hash.

  • #2275 Adição da tarefa de Rake db:mongoid:purge que eliminará todas as collections, com exceção das collections do sistema no banco de banco de dados padrão.

  • # Foram adicionadas chamadas de resposta2257 after_find para quando os documentos são devolvidos do banco de banco de dados.

    class Band
      include Mongoid::Document
    
      after_find do |doc|
        # Some logic here.
      end
    end
    
  • #2223 Permite encontrar documentos por JavaScript com parâmetros protegidos contra injeção de JavaScript via Model.for_js.

    Band.for_js("this.name = param", param: "Tool")
    Band.where(:likes.gt => 1000).for_js("this.likes < this.follows")
    
  • #2197 Ao fornecer uma configuração de sessão sem portas, o Mongoid agora as padronizará para 27017.

  • # As relações2180 1-n e nn agora são compatíveis antes/depois de adicionar/remover chamadas de resposta. (Rodrigo Saito)

    class Band
      include Mongoid::Document
    
      embeds_many :albums, after_add: :notify_labels
      has_many :followers, before_remove: ->(band, follower){ notify_unfollow(follower) }
    end
    
  • #2157 Criteria#update e Criteria#update_all agora serializam valores de acordo com seu tipo de campo , se um campo estiver definido.

  • #2022 Chamadas de resposta personalizadas agora podem se registrar para uso com observadores usando a 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 Relações de muitos para muitos não tocarão no banco de dados se a chave estrangeira for uma array vazia.

  • #1564 Muitas chaves estrangeiras agora têm o padrão definido preguiçosamente, somente se a relação tiver sido acessada. Isso evita armazenar arrays vazios se a relação não tiver sido tocada.

Problemas resolvidos

  • #2730 Chamar a classificação em um contexto atualiza adequadamente os critérios do contexto. (Arthur Novidades)

  • #2719 distinct agora está disponível no nível da classe .

    Band.distinct(:name)
    
  • #2714 A substituição de sessões quando a nova sessão tem um banco de banco de dados diferente agora também alternará corretamente o banco de dados de dados no tempo de execução.

  • #2697 Carregamento ansioso corrigido ao incluir vários modelos que herdam da mesma classe. (Kimill Lazarev)

  • #2664 A classificação de documentos incorporados na memória agora funciona corretamente quando vários campos são fornecidos. (Neer Creditman)

3.0.24

Problemas resolvidos

  • #2879 remove_attribute em novos documentos não cria mais uma operação $unset desnecessária.

3.0.23

Problemas resolvidos

  • #2851 Corrigiu a desmongoização do BigDecimal dos valores NaN. (nkem)

  • #2841 Chamar delete_all ou destroy_all em um embedded many quando estiver no meio de uma atualização principal agora executará corretamente a exclusão. (Arthur Novidades)

  • #2835 Limpeza corrigida das opções de persistência no validador de exclusividade.

  • #2826 Os campos dinâmicos agora estão mongoizados corretamente.

  • #2822 A carga de relações do Marques agora reaplica adequadamente as extensões.

  • #2821 As relações salvas automaticamente devem ser duplicadas nas classes herdadas.

3.0.22

Problemas resolvidos

  • #2812 Critérios corrigidos em relações muitos para muitos quando o documento base é destruído e a chave estrangeira ainda não foi avaliada como preguiçosa.

  • #2796 Não faça alterações em cascata nas relações has_many ao atribuir com uma exclusão.

  • #2795 Corrija a precisão nas conversões de tempo. (Tom de Burijn)

  • #2794 Não autoconstruir ao ler uma relação para validação.

  • #2790 becomes agora copia documentos incorporados, mesmo que tenham sido protegidos por atribuição em massa.

  • #2787 Permita que becomes substitua o documento no mapa de identidade.

  • #2786 Corrigiu chamada de resposta em cascata regressão ao destruir não disparando.

  • #2784 Corrigiu a validação de exclusividade sendo adicionada corretamente às subclasses. (Tokeshi Okima)

3.0.21

Problemas resolvidos

  • #2781 / * #2777 - Corrigido o problema com a serialização do DateTime que estava presente apenas em ambientes Rails.

3.0.20

Problemas resolvidos

  • #2774 Garantir que macros de validação para exclusividade, presença e associadas também estejam disponíveis no nível da instância.

  • #2772 Os campos localizados agora são tratados corretamente ao clonar um documento.

  • #2758 Mongoid.create_indexes não falha quando não é possível constantes na classe. (Arthur Novidades)

  • #2743 As opções de persistência não são mais desmarcadas ao carregar revisões. (Arthur Novidades)

  • #2741 Corrigir erros de arredondamento de uso de mongoização de tempo em MRI e JRuby.

  • #2740 Suporte a chaves inteiras em campos de hash ao usar read_attribute com notação de ponto de ponto.

  • #2739 Garanta que a desserialização de número inteiro seja lançada corretamente em inteiros.

  • #2733 Relações muitos para muitos com inverse_of: nil não persistem a relação inversa em << ou push se o documento já persiste.

  • #2705 Lógica corrigida em torno de quando os filhos podem ser adicionados à lista de chamadas de resposta em cascata.

3.0.19

Problemas resolvidos

  • Lançado para reverter as alterações no #2703.

3.0.18

Problemas resolvidos

  • #2707 Cancelar find_or_create_by ou find_by_initialize_by uma relação com um critério ou escopo encadeado agora mantém adequadamente as relações intactas no documento novo ou encontrado.

  • #2699 A redefinição de um campo agora remove o nome da lista de atributos alterados. (Subhash Bhushan)

  • #2683 Campos com nomes alternativos agora são suportados ao executar operações atômicas a partir de critérios. (Arthur Novidades)

  • #2678 Chamando Criteria#sum sem documentos correspondentes retorna 0 em vez de nil.

  • #2671 Os correspondedores agora manipulam corretamente as chaves de símbolo. (Jonathan Hyman)

3.0.17

Problemas resolvidos

  • #2686 Corrigiu a dependência quebrada do Moped - o Moped agora deve ser pelo menos na versão 1.2.0.

3.0.16

Problemas resolvidos

  • #2661 Implemente o nível de instância model_name para documentos.

  • #2651 Certifique-se de que Criteria#type funcione corretamente com as chaves de símbolo e string no seletor.

  • #2647 Certifique-se de que deleted? e destroyed? em documentos paranóia retornem o mesmo valor.

  • #2646 Defina o documento descarregado na memória em destinos enumeráveis antes de ceder ao bloco.

  • #2645 Leve em consideração o cache ao solicitar contagens. (Arthur Noguardira Neves) .

  • #2642 Não envie arrays vazias em lote em documentos incorporados. (Laszlo Bassi)

  • #2639 Evite queries desnecessárias extras em novos registros ao construir relações a partir delas.

  • #2638 Quando um critério está carregando, chamando first ou last , em seguida, iterando todos os resultados corretamente carrega a solicitação completa.

  • #2618 A validação da exclusividade agora sempre usa a consistência da string por padrão.

  • #2564 Corrigiu a recursão infinita para casos em que um getter de relação foi substituído e chamou o setter desse método.

  • #2554 Certifique-se de que unscoped em um embeds_many não inclua documentos sinalizados para destruição.

3.0.15

Problemas resolvidos

  • #2630 Correção em cascata quando os metadados existem, mas não há cascata definida.

  • #2625 Correção Marshal.dump e Marshal.load de proxies e objetos de critérios.

  • #2619 Corrigiu as classes retornadas pelo observed_classes em um observador quando ele estava observando modelos personalizados.

  • #2612 DocumentNotFound erros agora expõem a classe na instância de erro.

  • #2610 Certifique-se de chamar first depois que um last que tinha opções de classificação redefina a classificação.

  • #2604 Verifique se há atualizações conflitantes. (Lucas Sousa)

  • #2600 Instancie o tipo de classe adequado para atributos ao usar atributos de vários parâmetros. (xxswingxx)

  • #2598 Classificação corrigida em campos localizados com Docs incorporados.

  • #2588 Métodos de definição de bloco para atributos dinâmicos que seriam métodos Ruby inválidos. (Mat Shard)

  • #2587 Corrige o conflito de métodos com belongs_to proxies ao redefinir critérios de relação descarregada.

  • #2585 Certifique-se de que as opções de configuração da sessão sejam passadas para o Moped como símbolos.

  • #2584 Permitir que o mapa/redução opere em secundários se a saída estiver definida como inline.

  • #2582 Certifique-se de que a substituição da sessão nil nunca possa causar o acesso a uma sessão com o nome nil.

  • #2581 Use consistência forte ao recarregar documentos. (Mark Kremer)

3.0.14

Problemas resolvidos

  • #2575 Impedir que os horários do final do mês sejam arredondados, pois os flutuadores não são precisos o suficiente para lidar com o usec. (Steve Validis)

  • #2573 Não use i18n para mensagens de inspeção.

  • #2571 Remove mensagem de erro em branco dos locais. (Jordata Elver)

  • #2568 Corrigir a validação de exclusividade para campos lacalizados quando um escopo também for fornecido.

  • #2552 Garantir que erros InvalidPath sejam gerados quando documentos incorporados tentarem obter caminhos de um seletor raiz.

3.0.13

Problemas resolvidos

  • #2548 Corrige o erro ao gerar arquivo de configuração com um aplicativo novo com Unicorn no gemset.

3.0.12

Problemas resolvidos

  • #2542 Permitir documentos incorporados usando store_as para definir um nome alternativo adequado nos critérios.

  • #2541 Certifique-se de que a alteração de tipo esteja correta ao fazer upcast/downcast de um documento via Document#becomes ( clulasz bandejas )

  • #2529 Campos em subclasses que substituem campos no pai onde ambos têm padrões com procs agora substituem corretamente o padrão na subclasse.

  • #2528 Campos com nomes alternativos precisam ser duplicados ao criar uma subclasse.

  • #2527 Garantir que a remoção de Docs em um has_many faça uma atualização múltipla ao definir como uma array vazia.

3.0.11

Problemas resolvidos

  • #2522 Corrigiu Criteria#with para retornar os critérios e não a classe.

  • #2518 Chamada de trabalho fixa para o mapa de identidade ao usar o Passenger.

  • #2512 Garantir que a destruição de atributos aninhados funcione com a destruição atrasada introduzida em 3.0.10 quando houver vários níveis de profundidade.

  • #2509 Não atinja o mapa de identidade mais uma vez quando o valor retornado for um hash vazio. (Douwe Maan)

3.0.10

Problemas resolvidos

  • #2507 Garantir nenhum acesso extra ao banco de dados quando o carregamento rápido tiver uma combinação de pais com e sem Docs. (Douwe Maan)

  • #2505 Certifique-se de que update e update_all dos critérios manipulem adequadamente os campos com nome alternativo. (Dmitry Krasnoukhov)

  • #2504 Model#becomes mantém adequadamente o mesmo ID.

  • Os critérios de #2498 agora passam corretamente os blocos fornecidos method_missing.

  • #2496 Documentos incorporados que foram anteriormente armazenados sem IDs agora são atualizados corretamente e recebem IDs atribuídos de dentro do Mongoid.

  • #2494 Todas as operações atômicas explícitas agora respeitam adequadamente os campos com nome alternativo.

  • #2493 Use Class#name em vez de Class#model_name ao definir tipos polimórficos caso model_name tenha sido substituído.

  • #2491 Foi removida a chamada de mesclagem desnecessária em filhos em cascata.

  • #2485 A remoção de índices agora sempre usa consistência forte.

  • # O controle de versão2483 agora lida com campos localizados. (Lawrence Curtis)

  • #2482 Armazene parâmetros de localização no erro DocumentNotFound .

  • #2481 As aggregations de map/reduce agora manipulam corretamente o lote de mongo de reduzir trabalhos em grupos de 100 com o estado sendo passado através da contagem.

  • #2476 Gerencie o salto e o limite fora do intervalo nas relações embeds_many normalmente.

  • #2474 Separe corretamente as relações 1-1 quando o filho ainda não estiver carregado. (Kostyantyn Stepanyuk)

  • #2451 relation.deleted em documentos paranoid incorporados agora funcionam corretamente novamente.

  • #2472 Garantir que o update_all nas relações incorporadas funcione corretamente quando nada for realmente atualizado.

  • #2469 Documentos anulados sobre relações agora podem ser adicionados novamente com as mesmas na instância de memória.

  • #2454 Model#as_document permite adequadamente que as alterações tenham uma relação com a relação que está sendo removida. (James Alhard)

  • #2445 O middleware Mongoid agora suporta adequadamente respostas normais e transmitidas, e limpa adequadamente o mapa de identidade de ambas.

  • #2367 Documentos incorporados que devem ser excluídos por meio de atributos aninhados não são mais imediatamente removidos da relação caso a validação principal falhe. Em vez disso, eles são sinalizados para destruição e, em seguida, a remoção ocorre quando o pai passa pela validação e persiste.

Observe que esta é uma mudança de comportamento, mas como a API não muda e o comportamento anterior estava incorreto e não correspondia ao CR, isso foi capaz de Go em uma versão ponto .

3.0.9

Problemas resolvidos

  • #2463 Corrigiu o rails g mongoid:config quebrado de um novo repositório.

  • #2456 O cache de descendentes agora é redefinido quando o documento é herdado novamente. (Kostyantyn Stepanyuk)

  • #2453 Model#write_attribute agora funciona corretamente com campos com nomes alternativos. (Campbel allen)

  • #2444 Chamada de criação de métodos extras removidos. (Kostyantyn Stepanyuk)

  • #2440/#2435 Passe as opções de atribuição em massa para as crianças ao definir por meio de atributos aninhados ou documentos incorporados.

  • #2439 Corrigiu o vazamento de memória na seleção por thread de campos retornados. (Tim Olsen)

  • mongoid/moped#82 Campos com nome alternativo agora funcionam com Criteria#distinct.

  • #2423 Corrigiu o update_all do documento incorporado para executar o $set correto ao usar um critério.

  • # As definições de índice2414 agora respeitam campos com nomes alternativos.

  • #2413 Alvos enumeráveis agora retornam corretamente enumeradores quando nenhum bloco é fornecido. (Andrew Smith)

  • # Os campos BigDecimal2411 são armazenados corretamente como strings ao mongoizar inteiros e flutuantes.

  • #2409 Não avisa sobre a falta de mongoid.yml se configurado programaticamente.

  • #2403 Retornar falso em update_all de um incorpora muitos sem documentos.

  • #2401 Traga de volta a capacidade de mesclar um critério com um hash.

  • #2399 Rejeitar valores de ID em branco em has_many Model#object_ids=. (Tiago Rafa Gondo)

  • #2393 Certifique-se de que inverse_of seja respeitado ao usar relações polimórficas.

  • #2388 Map/reduce usa corretamente sort em vez de orderby na execução do comando. (Alex Tsibulya)

  • #2386 Permitir parâmetros de haystack geográfico e bits em índices. (Bradlei Rees)

  • #2380 Model#becomes agora copia corretamente atributos sujos.

  • #2331 Não faça push double documentos filhos quando salvamentos extras forem chamados em um retorno de chamada de resposta after_create .

3.0.8 (Arrancado)

3.0.6

Problemas resolvidos

  • # O escopo da validação de exclusividade2375 agora funciona com campos com nomes alternativos.

  • #2372 Certifique-se de que todas as operações atômicas mongoizem valores antes de executar.

  • #2370 Documentos paranóicos agora não são excluídos corretamente ao usar dependent: :restrict e uma exceção é gerada.

  • #2365 Não faça nada ao tentar substituir um embeds_one pelo mesmo documento.

  • #2362 Não armazene inverso de valores de campo no banco de banco de dados quando eles não são necessários. ( Quando não houver mais de um pai polimórfico definido na mesma classe).

  • #2360 Os documentos de clonagem devem ignorar as regras de proteção de atribuição em massa.

  • #2356 Ao limitar campos retornados em queries por meio only , certifique-se de que a limitação tenha escopo para o modelo.

  • #2353 Permita que update_attribute manipule adequadamente campos com nomes alternativos.

  • #2348 A conversão de strings em horários deve gerar um erro de argumento se a string for inválida. (Campbel allen)

  • #2346 Certifique-se de que as relações belongs_to sejam evoluíveis quando passado o proxy e não o documento.

  • #2334 Corrigiu o mapa/redução de agregação quando os campos às vezes não existem. (James MacKinney)

  • #2330 Corrigiu a inconsistência de #size e #longitude nos critérios quando os documentos foram iterados com um limite aplicado.

  • #2328 Garantir que a ordenação seja aplicada em todos os critérios de relação, se definidos.

  • #2327 Não execute retornos de chamada do documento base se o documento não puder executá-los.

  • #2318 Certifique-se de que a definição de qualquer valor numérico em um campo flutuante o defina como flutuante, mesmo que o número fornecido seja um inteiro.

3.0.5

Problemas resolvidos

  • #2313 Corrigiu a desserialização dos campos nil TimeWithZone . (nagachika)

  • #2311 Document#changes não retorna mais valores de nil para campos de Array e Hash que foram apenas acessados e não foram alterados. Regressão de 2.4.x.

  • #2310 A definição de muitos para muitos duplicados sucessivamente na memória não limpa mais as chaves estrangeiras inversas.

  • #2309 Permitir que as relações embeds_one sejam definidas com hashes mais do que apenas o conjunto inicial.

  • #2308 Garantir que os documentos recuperados por meio #find nas relações has_many e has_and_belongs_to_many sejam mantidos na memória.

  • #2304 Os escopos padrão agora são mesclados corretamente em vez de substituir quando mais de um é definido de acordo com as expectativas com o CR. (Kimill Macsimov)

  • #2300 Certifique-se de que o recarregamento atualize o documento no mapa de identidade.

  • #2298 Proteção contra relações de muitos para muitos que extraem um conjunto de IDs nulo. (Jonathan Hyman)

  • #2291 Operações de toque fixas apenas para atualizar o carimbo de data/hora e o campo opcional, independentemente das outras alterações no documento .

  • #1091 Permitir que a validação de presença passe se o valor for false.

3.0.4

Problemas resolvidos

  • #2280 Corrija a sincronização de relações muitos-para-muitos quando um escopo padrão de ordenação existir em ambos os lados da associação.

  • #2278 Criteria#update agora atualiza corretamente somente o primeiro documento correspondente, onde Criteria#update_all atualizará todos os documentos correspondentes. (sem bandeira vs multi).

  • #2274 Ao carregar modelos, avisa se o erro for gerado, mas continua processando.

  • #2272 Não limpe seletores ou opções ao remover o escopo padrão para valores reais nulos. Deve verificar se a chave também existe.

  • #2266 Documentos paranoid restaurados não são mais sinalizados como destruídos. (Mário Uher)

  • #2263 Certifique-se de que a conversão de chaves estrangeiras sem ID de objeto em relações de muitos para muitos ocorra no conjunto inicial, não no momento da validação.

3.0.3

Problemas resolvidos

  • #2259 Garanta que documentos subclassificados não possam ser extraídos do mapa de identidade por meio de um ID de outro documento na mesma coleção com um tipo pai ou sibeling.

  • #2254 As operações $inc não convertem mais todos os valores em flutuantes.

  • #2252 Não dispara o salvamento automático antes que os retornos de chamada tenham sido encerrados.

  • #2248 Melhorou o desempenho do exists? em critérios e relações. (Jonathan Hyman)

3.0.2

Problemas resolvidos

  • #2244 Elimine os avisos de atribuição em massa de ID em atributos aninhados.

  • #2242 Corrige o carregamento antecipado para não carregar todos os documentos ao chamar o primeiro ou o último.

  • # As operações de mapeamento/redução2241 agora sempre usam consistência forte, pois têm o potencial de escrever em coleções, na maioria das vezes.

  • #2238 Certifique-se de que os campos de chave estrangeira nn sejam sinalizados como redimensionáveis para evitar nil -> [] alterações ao usar #only e atualizar.

  • #2236 Mantenha a instância do documento na exceção de validações acessível por meio document ou record.

  • #2234 Certifique-se de que as validações quando o documento estiver sendo persistido com opções personalizadas funcionem corretamente com opções personalizadas e não as remova se a validação for aprovada.

  • #2224 Model#inc agora aceita valores BigDecimal .

  • #2216 Atribuição corrigida de metadados à incorporação de uma relação ao definir várias vezes seguidas.

  • #2212 Garantir que os erros sejam limpos após salvar com validate: false em todas as situações.

  • #2207 Quando estiver carregando IDs, a query deve ser duplicada para evitar vários problemas de iteração que não obtêm os campos obrigatórios.

  • #2204 Gere um erro InvalidIncludes ao passar argumentos para Criteria.includes que são inválidos (não relacionamentos ou mais de 1 nível).

  • #2203 Map/Reduce agora funciona corretamente em conjunto com Model#with.

    Band.
      with(session: "secondary").
      where(:likes.gt => 100).
      map_reduce(map, reduce).
      out(inline: 1)
    
  • #2199 O salvamento automático falso agora é respeitado ao adicionar automaticamente a validação de presença. (John Nizanaga)

3.0.1

Problemas resolvidos

  • #2191 Garanta a visibilidade adequada (privado) para métodos de geração de mensagens de erro.

  • #2187 Garantir que todos os níveis de documentos aninhados sejam serializados em JSON.

  • #2184 Permitir que os nomes das relações que entram em conflito com os métodos do kernel do Ruby passem pelas verificações de existência.

  • #2181 Certifique-se de que os critérios .first sejam classificados por IDs crescentes, se nenhum outro critério de classificação tiver sido fornecido.

3.0.0

Novas funcionalidades

  • #2151 Ao solicitar metadados antes da persistência, o Mongoid agora criará um erro Mongoid::Errors::NoMetadata se os metadados não estiverem presentes.

  • #2147 Model#becomes agora copia os documentos incorporados.

  • Uma nova chamada de resposta de resposta foi introduzida: upsert, que é executada ao chamar document.upsert , pois o Mongoid não sabe se o documento deve ser tratado como novo ou persistente. Com isso vêm as chamadas de resposta do modelo:

    before_upsert
    after_upsert
    around_upsert
    
  • #2080/#2087 O banco de dados de dados ou a sessão para a qual o Mongoid persiste agora pode ser substituído em nível global para casos em que Model#with não é uma opção estável.

    Mongoid.override_database(:secondary)
    Mongoid.override_session(:secondary)
    
    Band.create(name: "Placebo") #=> Persists to secondary.
    band.albums.create #=> Persists to secondary.
    

    Observe que esta opção é global e substitui todos os modelos no thread atual. É responsabilidade do desenvolvedor lembrar de definir isso de volta para nulo se você não quiser mais que a substituição aconteça.

    Mongoid.override_database(nil)
    Mongoid.override_session(nil)
    
  • #1989 Critérios count, size e length agora se comportam como Active Record com relação ao acesso ao banco de dados de dados.

    Criteria#count sempre atingirá o banco de dados de dados para obter a contagem.

    Criteria#length e Criteria#size atingirá o banco de dados de dados uma vez se os critérios não tiverem sido carregados, e as chamadas subsequentes retornarão o valor em cache.

    Se os critérios tiverem sido iterados ou carregados, length e size nunca atingirão o banco de dados.

  • #1976 A carga ávida não produz mais queries quando a query base retorna zero resultados.

  • Model.find_by agora aceita um bloco e renderá ao documento encontrado se não for nulo.

    Band.find_by(name: "Depeche Mode") do |band|
      band.likes = 100
    end
    
  • Documentos1958/#1798 e relacionamentos belongs_to agora suportam toque.

    class Band
      include Mongoid::Document
      include Mongoid::Timestamps::Updated
      belongs_to :label, touch: true
    end
    

    Atualize o carimbo de data/hora updated_at do documento para a hora atual. Isso também atualizará o carimbo de data/hora de qualquer relação tocável.

    Band.first.touch
    

    Atualize um campo de tempo específico junto com o udpated_at.

    Band.first.touch(:founded)
    

    Isso não dispara validações ou chamadas de resposta.

  • O Mongoid agora suporta o comando $findAndModify do MongoDB.

    Band.find_and_modify("$inc" => { likes: 1 })
    
    Band.desc(:name).only(:name).find_and_modify(
      { "$inc" => { likes: 1 }}, new: true
    )
    
  • #1906 O Mongoid recuperará documentos do mapa de identidade ao fornecer vários IDs para localizar. (Hans Hasseuber)

  • #1903 Mongoid gera um erro se for fornecida uma expressão JavaScript em uma cláusula onde em uma coleção incorporada. (Sébastien Azure)

  • As agregações agora aderem a uma API Mongoid e suas inumeráveis contrapartes, quando aplicável.

    Band.min(:likes)
    Band.min do |a, b|
      a.likes <=> b.likes
    end
    
    Band.max(:likes)
    Band.max do |a, b|
      a.likes <=> b.likes
    end
    

    Observe que, ao fornecer um nome de campo e não bloco, um único valor numérico será retornado, mas ao fornecer um bloco, será retornado um documento com o valor mínimo/máximo. Isso ocorre porque a API Enumerable do Ruby determina que ao fornecer um bloco, o elemento correspondente é retornado.

    Ao fornecer um bloco, todos os documentos serão carregados na memória. Ao fornecer um símbolo, a execução é tratada por meio de map/reduce no servidor.

  • Agora é fornecido um método de agregação de pia de cozinha para obter tudo em uma única chamada para um campo.

    Band.aggregates(:likes)
    # =>
    #   {
    #     "count" => 2.0,
    #     "max" => 1000.0,
    #     "min" => 500.0,
    #     "sum" => 1500.0,
    #     "avg" => 750.0
    #   }
    
  • Um DSL fora da API de critérios agora é fornecido para operações de mapa/redução como uma conveniência.

    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)
    
  • A Mongoid agora usa o Origin para sua API de critérios. Consulte o repositório de origem e os API Docs de para obter a documentação.

  • #1861 O Mongoid agora gera um erro AmbiguousRelationship quando não consegue determinar o inverso de uma relação e há vários candidatos em potencial. (Hans Hasseuber)

  • Agora você pode realizar uma explicação diretamente a partir dos critérios.

    Band.where(name: "Depeche Mode").explain
    
  • #1856 O push em um para muitos relacionamentos agora pode ser encadeado.

    band.albums.push(undertow).push(aenima)
    
  • #1842 MultiParameterAttributes agora suporta campos com nomes alternativos. (Anton Orel)

  • #1833 Se houver uma tentativa de salvar um documento incorporado sem um pai definido, o Mongoid agora criará uma exceção Mongoid::Errors::NoParent .

  • Foi adicionada uma maneira independente de ORM de obter os nomes dos campo

    class Band
      include Mongoid::Document
      field :name, type: String
    end
    
    Band.attribute_names
    
  • #1831 find_or_create_by sobre relações agora aceita atribuição em massa e opções de tipo. (Ttasuya Ono)

    class Band
      include Mongoid::Document
      embeds_many :albums
    end
    
    band.albums.find_or_create_by({ name: "101" }, LP)
    
  • #1818 Adicione a capacidade de escolher a chave onde o seu relacionamento embeds_many está armazenado. (Cyril Mongogel)

    class User
      include Mongoid::Document
      field :name, type: String
      embeds_many :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_by e Model.find_or_initialize_by podem agora receber documentos como paramters para relações requires_to.

    person = Person.first
    Game.find_or_create_by(person: person)
    
  • # As relações1774 agora têm uma opção :restrict para relações dependentes, que gerará um erro ao tentar excluir um pai que ainda tem filhos. (Hans Hasseuber)

    class Band
      include Mongoid::Document
      has_many :albums, dependent: :restrict
    end
    
    band = Band.first
    band.albums << Albums.first
    band.delete # Raises DeleteRestriction error.
    
  • #1764 Adicionar método para verificar se o campo difere do valor padrão.

    class Band
      include Mongoid::Document
      field :name, type: String, default: "New"
    end
    
    band = Band.first
    band.name_changed_from_default?
    
  • #1759 Mensagens de erro de campos inválidos foram atualizadas para mostrar a origem e a localização do método original. A nova mensagem é:

    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 Agora é fornecido um setter e um getter para relações has_many definir seus filhos. (Piotr Jakubski)

    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 O Mongoid agora fornece uma tarefa de rastelo para forçar a remoção de índices para ambientes em que o Mongoid gerencia as definições de índice e a remoção deve ser automatizada. (Hans Hasseuber)

    rake db:force_remove_indexes
    rake db:mongoid:force_remove_indexes
    
  • #1726 Mongoid.load! agora aceita um segundo argumento opcional para o ambiente carregar. Isso tem precedência sobre qualquer variável de ambiente que seja definida se fornecida.

    Mongoid.load!("/path/to/mongoid.yml", :development)
    
  • #1724 Mongoid agora suporta campos regex.

    class Rule
      include Mongoid::Document
      field :pattern, type: Regexp, default: /[^abc]/
    end
    
  • #1714/#1706 Adicionado melhor registro na criação do índice. (Hans Hasseuber)

    Quando um índice está presente em um document model raiz:

    Creating indexes on: Model for: name, dob.
    

    Quando um índice é definido em um modelo embarcado:

    Index ignored on: Address, please define in the root model.
    

    Quando nenhum índice é definido, nada é registrado e, se um índice incorreto for definido, um erro será gerado.

  • #1710 Para casos em que você não deseja que o Mongoid proteja automaticamente os atributos de ID e tipo, você pode definir uma opção de configuração para desativar isso.

    Mongoid.protect_sensitive_fields = false
    
  • #1685 Pertence a relações agora tem métodos build_ e 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 Crie um Mongoid::Errors::InverseNotFound ao tentar definir um filho em uma relação sem as definições inverse_of adequadas devido ao fato de o Mongoid não ser capaz de determiná-lo.

    class Car
      include Mongoid::Document
      embeds_one :engine, class_name: "Motor"
    end
    
    class Motor
      include Mongoid::Document
      embedded_in :machine, class_name: "Car"
    end
    
    car = Car.new
    car.engine = Motor.new # raises an InverseNotFound error.
    
  • # As relações polimórficas1680 agora usam *_type chaves nas queries de pesquisa.

    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 O suporte para relações polimórficas separáveis do pai para a mesma classe pai agora está disponível. Isso só funciona se definido pelo lado dos pais para saber a qual relação os filhos pertencem. (Douwe Maan)

    class Face
      include Mongoid::Document
      has_one :left_eye, class_name: "Eye", as: :visible
      has_one :right_eye, class_name: "Eye", as: :visible
    end
    
    class Eye
      include Mongoid::Document
      belongs_to :visible, polymorphic: true
    end
    
    face = Face.new
    right_eye = Eye.new
    left_eye = Eye.new
    face.right_eye = right_eye
    face.left_eye = left_eye
    right_eye.visible = face # Will raise an error.
    
  • #1650 Objetos que respondem a to_criteria agora podem ser mesclados em objetos de critérios existentes.

    class Filter
      def to_criteria
        # return a Criteria object.
      end
    end
    
    criteria = Person.where(title: "Sir")
    criteria.merge(filter)
    
  • #1635 Todas as exceções agora fornecem erros mais abrangentes, incluindo o problema que ocorreu, um resumo detalhado do motivo pelo qual ele aconteceu e possíveis soluções. Exemplo:

    (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.
    
  • #1616 Model.find_by adicionado, que usa um hash de argumentos para procurar no banco de banco de dados. Se nenhum documento for retornado, um erro DocumentNotFound será gerado. (Piotr Jakubski)

    Band.find_by(name: "Depeche Mode")
    
  • #1606 O Mongoid agora ativa o salvamento automático, como o Active Record, ao adicionar accepts_nested_attributes_for a uma relação.

    class Band
      include Mongoid::Document
      has_many :albums
      accepts_nested_attributes_for :albums # This enables the autosave.
    end
    
  • #1477 Mongoid agora protege automaticamente os atributos de ID e tipo de atribuição em massa. Você pode substituir isso (não recomendado) redefinindo-os como acessíveis.

    class Band
      include Mongoid::Document
      attr_accessible :id, :_id, :_type
    end
    
  • #1459 O mapa de identidade pode ser desativado agora para execução de código específico, passando opções para a unidade de trabalho.

    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 Associações agora podem ter opções de segurança fornecidas a elas em operações de persistência de documento único.

    band.albums.with(safe: true).push(album)
    band.albums.with(safe: true).create(name: "Smiths")
    
    album.with(safe: true).create_producer(name: "Flood")
    
  • #1348 A carga ávida agora é suportada em relações muitos-para-muitos.

  • #1292 O atributo Remover agora redefine o atributo quando o documento é salvo em vez de definir como nulo.

    band = Band.find(id)
    band.remove_attribute(:label) # Uses $unset when the document is saved.
    
  • #1291 Sessões de banco de dados de dados Mongoid agora são conectadas preguiçosamente e são totalmente seguras contra threads. Se um novo thread for criado, uma nova sessão do banco de dados de dados será criada para ele.

  • #1291 Mongoid agora suporta qualquer número de conexões de banco de dados de dados, conforme definido no mongoid.yml. Por exemplo , você pode ter um banco de dados de servidor local único, um conjunto de réplicas de zona de disponibilidade de multidisponibilidade e um cluster de shards, tudo no mesmo ambiente de aplicação . O Mongoid pode se conectar a qualquer sessão a qualquer ponto .

  • #1291 O Mongoid agora permite que você persista em qualquer banco de dados de dados ou coleção que você desejar no tempo de execução, em uma operação por query ou de persistência usando with.

    Band.with(collection: "artists").create(name: "Depeche Mode")
    band.with(database: "secondary).save!
    Band.with(collection: "artists").where(name: "Depeche Mode")
    
  • #1291 Agora você pode configurar por modelo onde seus documentos são armazenados com a macro store_in nova e aprimorada.

    class Band
      include Mongoid::Document
      store_in collection: "artists", database: "secondary", session: "replica"
    end
    

    Isto pode ser substituído, é claro, em tempo de execução por meio do método with .

  • #1212 Documentos incorporados agora podem ser retirados de uma relação com persistência.

    band.albums.pop # Pop 1 document and persist the removal.
    band.albums.pop(3) # Pop 3 documents and persist the removal.
    
  • #1188 As relações agora têm predicados de existência para simplificar a verificação se a relação está em branco ou não. (Andy monris)

    class Band
      include Mongoid::Document
      embeds_many :albums
      embeds_one :label
    end
    
    band = Band.new
    band.albums?
    band.has_albums?
    band.label?
    band.has_label?
    
  • # As relações1188 1-1 agora têm uma opção :autobuild para indicar se a relação deve ser construída automaticamente com atributos vazios após o acesso, onde a relação atualmente não existe. Funciona em embeds_one, embedded_in, has_one, requires_to. (Andy monris)

    class Band
      include Mongoid::Document
      has_one :label, autobuild: true
    end
    
    band = Band.new
    band.label # Returns a new label with empty attributes.
    

    Ao usar verificações de existência, a construção automática não será executada.

    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 Índices Mongoide ID e tipo como um índice composto ao fornecer index: true a um requires_to polimórfico.

    class Comment
      include Mongoid::Document
    
      # Indexes commentable_id and commentable_type as a compound index.
      belongs_to :commentable, polymorphic: true, index: true
    end
    
  • #1053 Elevar um Mongoid::Errors::UnknownAttribute em vez de nenhum método ao tentar definir um campo que não esteja definido e permitir campos dinâmicos for falso. (Cyril Mongogel)

    Mongoid.allow_dynamic_fields = false
    
    class Person
      include Mongoid::Document
      field :title, type: String
    end
    
    Person.new.age = 50 # raises the UnknownAttribute error.
    
  • #772 Campos agora podem ser sinalizados como somente leitura, o que só permitirá que seus valores sejam definidos quando o documento for novo.

    class Band
      include Mongoid::Document
      field :name, type: String
      field :genre, type: String
    
      attr_readonly :name, :genre
    end
    

    Os valores somente leitura são ignorados ao tentar defini-los em documentos persistentes, com exceção de update_attribute e remove_attribute, onde os erros serão gerados.

    band = Band.create(name: "Depeche Mode")
    band.update_attribute(:name, "Smiths") # Raises ReadonlyAttribute error.
    band.remove_attribute(:name) # Raises ReadonlyAttribute error.
    

Principais alterações (incompatíveis com versões anteriores)

  • As relações polimórficas não podem ter IDs diferentes de IDs de objeto . Isso ocorre porque o Mongoid não consegue descobrir de forma otimizada como as várias classes no outro lado da relação armazenam seus ids, pois todas podem ser potencialmente diferentes.

Isso não era permitido antes, mas em nenhum lugar foi explicitamente indicado.

  • #2039 A validação da presença de uma relação agora verifica a relação e o valor da chave estrangeira.

  • A sintaxe de indexação mudou. O primeiro parâmetro agora é um hash de pares de nome/direção com um segundo parâmetro de hash opcional para opções adicionais.

    Indexação normal com opções, direções são 1 ou -1:

    class Band
      include Mongoid::Document
      field :name, type: String
    
      index({ name: 1 }, { unique: true, background: true })
    end
    

    A indexação geoespacial precisa de "2d" como sua direção.

    class Venue
      include Mongoid::Document
      field :location, type: Array
    
      index location: "2d"
    end
    
  • Os campos serializáveis personalizados foram remodelados. Seu objeto não deve mais incluir Mongoid::Fields::Serializable - em vez disso, ele só precisa implementar os métodos 3 : #mongoize, .demongoize e .evolve.

    #mongoize é um método de instância que transforma seu objeto em um valor compatível com mongo.

    .demongoize é um método de classe , que pode pegar alguns dados do mongo e instanciar um objeto do seu tipo personalizado.

    .evolve é um método de classe , que pode pegar qualquer objeto e transformá-lo para uso em um Mongoid::Criteria.

    Um exemplo de uma implementação disso 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#changes não é mais um hash com acesso indiferente.

  • after_initialize os retornos de chamada não serão mais distribuídos para as crianças se a opção estiver definida.

  • #1865 count nos contextos de memória e mongo agora se comportam exatamente da mesma forma que o count de Ruby no enumerável e podem receber um objeto ou um bloco. Isso é otimizado no contexto do mongo para não carregar tudo na memória, com exceção de passar um bloco.

    Band.where(name: "Tool").count
    Band.where(name: "Tool").count(tool) # redundant.
    Band.where(name: "Tool") do |doc|
      doc.likes > 0
    end
    

    Observe que, embora as assinaturas sejam as mesmas para os contextos de memória e mongo, é recomendável usar apenas a sintaxe de bloco para o contexto de memória, pois os documentos incorporados já estão carregados na memória.

    Observe também que passar um booleano para levar em conta o salto e o limite não é mais suportado, pois esse não é necessariamente um recurso útil.

  • A opção de configuração do autocreate_indexes foi removida.

  • Model.defaults não existe mais. Você pode obter todos os padrões com uma combinação de Model.pre_processed_defaults e Model.post_processed_defaults.

    Band.pre_processed_defaults
    Band.post_processed_defaults
    
  • Model.identity e Model.key foram removidos. Para IDs personalizados, os usuários agora devem substituir o campo _id .

    Quando o valor padrão é um proc, o padrão é aplicado depois que todos os outros atributos são definidos.

    class Band
      include Mongoid::Document
      field :_id, type: String, default: ->{ name }
    end
    

    Para ter o padrão aplicado antes de outros atributos, defina :pre_processed como verdadeiro.

    class Band
      include Mongoid::Document
      field :_id,
        type: String,
        pre_processed: true,
        default: ->{ BSON::ObjectId.new.to_s }
    end
    
  • As exceções de aplicação personalizados em vários idiomas foram removidas, juntamente com o recurso Mongoid.add_language .

  • O Mongoid não é mais compatível com o 1.8. Somente MRI 1.9.3 e superior, ou JRuby 1.6 e superior no modo 1.9 são suportados.

  • #1734 Ao pesquisar documentos via Model.find com vários ids, o Mongoid criará um erro se nem todos os ids forem encontrados e dirá quais eram os ausentes. Anteriormente, o erro só era gerado se nada fosse retornado.

  • #1675 Adicionar validação de presença em uma relação agora habilita o salvamento automático. Isso é para garantir que, quando um novo objeto pai for salvo com um novo filho e marcado como válido, ambos sejam persistidos para garantir um estado correto no banco de banco de dados.

  • #1491 Garantir que as traduções vazias retornem um hash vazio no acesso.

  • #1484 Model#has_attribute? agora se comporta da mesma forma que o Active Record.

  • #1471 Mongoide não remove mais nenhum nível de precisão dos horários.

  • #1475 O fuso zona do suporte ativo agora é usado por padrão na serialização de tempo, se definido.

  • #1342 Model.find e model.relation.find agora usam apenas um ou vários IDs. O primeiro/último/todos com um hash de condições foi removido.

  • #1291 O mongoid.yml foi completamente remodelado, e a atualização dos aplicativos existentes irá saudá-lo com alguns adoráveis erros de configuração específicos do Mongoid. Você pode gerar novamente um novo mongoid.yml por meio da tarefa de varredura existente, que é comentada em um grau insano para ajudá-lo com todas as possibilidades de configuração.

  • #1291 A opção de configuração do persist_in_safe_mode foi removida. Agora você deve informar a uma sessão de banco de dados de dados no mongoid.yml se ela deve ou não persistir no modo de segurança por padrão.

    production:
      sessions:
        default:
          database: my_app_prod
          hosts:
            - db.app.com:27018
            - db.app.com:27019
          options:
            consistency: :eventual
            safe: true
    
  • #1291 safely e unsafely foram removidos. Agora use with para fornecer opções de modo de segurança no tempo de execução.

    Band.with(safe: true).create
    band.with(safe: { w: 3 }).save!
    Band.with(safe: false).create!
    
  • #1270 As macros de relação foram alteradas para corresponder às suas contrapartes de URL: apenas :has_one, :has_many, :has_and_belongs_to_many e :belongs_to existem agora.

  • #1268 Model#new? foi removido, os desenvolvedores agora devem sempre usar Model#new_record?.

  • #1182 Uma recarga não é mais necessária para atualizar uma relação depois de definir o valor do campo de chave estrangeira para ela. Observe que isso se comporta exatamente como Active Record.

    Se o ID estiver definido, mas o documento para ele não tiver sido persistido, o acesso à relação retornará resultados vazios.

    Se o ID estiver definido e seu documento persistir, acessar a relação retornará o documento.

    Se o ID estiver definido, mas o documento base não for salvo posteriormente, o recarregamento retornará o documento ao seu estado original.

  • # As estratégias de serialização de campo do1093 foram alteradas em Array, Hash, Integer e Boolean para serem mais consistentes e corresponderem ao Realm quando apropriado.

    A serialização de chamadas de arrays Array.wrap(object) A serialização de chamadas de hashes Hash[object] (to_hash no objeto) A serialização de números inteiros sempre retorna um int via to_i A serialização de padrões booleanos para falso em vez de nulo.

  • #933 :field.size foi renomeado para :field.count nos critérios de $size para não entrar em conflito com o método de tamanho da Símbolo.

  • O código de escopo do Mongoid #829/#797 foi completamente reescrito e agora corresponde à API do Active Record. Com essa alteração incompatível com versões anteriores, alguns métodos foram removidos ou renomeados.

    Os critérios#as_ conditions e os critérios#fuse não existem mais.

    Os critérios#merge agora só aceitam outro objeto que responda a to_criteria.

    Critérios#merge! agora mescla em outro objeto sem criar um novo objeto de critérios.

    Band.where(name: "Tool").merge!(criteria)
    

    Os escopos nomeados e padrão não aceitam mais hashes como parâmetros. A partir de agora, apenas os critérios e os critérios de agrupamento dos procs serão aceitos, e um erro será gerado se os argumentos estiverem incorretos.

    class Band
      include Mongoid::Document
    
      default_scope ->{ where(active: true) }
      scope :inactive, where(active: false)
      scope :invalid, where: { valid: false } # This will raise an error.
    end
    

    A macro 'named_scope' foi removida, a partir de agora use apenas 'scope'.

    Model.unscoped agora aceita um bloco que não permitirá que o escopo padrão seja aplicado a nenhuma chamada dentro do bloco.

    Band.unscoped do
      Band.scoped.where(name: "Ministry")
    end
    

    Model.scoped agora aceita opções que serão definidas diretamente no hash de opções de critérios.

    Band.scoped(skip: 10, limit: 20)
    
  • #463 Document#upsert não tem mais nomes alternativos de Document#save e agora executa um comando upsert MongoDB adequado quando chamado. Se você estava usando este método antes e deseja o mesmo comportamento, alterne para save.

    band = Band.new(name: "Tool")
    band.upsert #=> Inserts the document in the database.
    band.name = "Placebo"
    band.upsert #=> Updates the existing document.
    

Problemas resolvidos

  • #2166 Criteria#from_map_or_db remove a seleção de tipo durante o carregamento antecipado, pois verificará se o tipo está correto depois.

  • #2129 Classificação corrigida para todos os campos em muitas relações incorporadas.

  • #2124 Escopo padrão corrigido e escopo excluído em documentos paranóicos.

  • #2122 Permitir que documentos incorporados sejam classificados em campos de booleanos.

  • #2119 Permita que Criteria#update_all aceite operações atômicas e conjuntos normais.

  • #2118 Não remova nenhuma precisão durante DateTime -> Time conversões.

  • #2117 Certifique-se de que as relações incorporadas tenham chamadas de resposta executadas ao usar atributos aninhados.

  • #2110 Model#touch agora funciona corretamente em documentos incorporados.

  • #2100 Permitir que as operações atômicas sejam executadas corretamente em documentos paranóia que tenham um conjunto delete_at.

  • #2089 Permitir a separação adequada entre mongoização e evolução em relação às chaves estrangeiras.

  • #2088 Permitir que descobertas por IDs de string sejam retiradas do mapa de identidade se os ids forem armazenados como IDs de objeto .

  • #2085 Permitir a desmongoização de floats e ints para grandes decimais.

  • #2084 Não cascata se metadados não existirem.

  • #2078 Chamando Model#clone ou Model#dup agora define corretamente os atributos como sujos.

  • #2070 Permitir que updated_at seja substituído manualmente por novos documentos que também tenham um created_at.

  • #2041 Não atinja o banco de dados de dados várias vezes no acesso de relação depois que uma carga ávida retornar zero documentos.

  • #1997 Chamadas de resposta em cascata devem ser capazes de interromper a cadeia de chamada de resposta de resposta ao encerrar.

  • #1972 added, loaded e unloaded agora podem ser nomes de escopo válidos em um documento que faz parte de uma relação 1-n.

  • O comportamento1952/#1950 #all_in em documentos incorporados agora corresponde corretamente aos documentos raiz ao passar uma array vazia. (Hans Hasseuber)

  • #1941/#1939 Model.find_by agora retorna nulo se o erro de aumento não encontrado estiver definido como falso. (Hans Hasseuber)

  • #1859/#1860 Model#remove_attribute agora é desconfigurado corretamente em documentos incorporados. (Anton Onyshchenko)

  • #1852 Garanta que não haja recursão infinita em chamadas de resposta em cascata. (Ara Howard)

  • #1823 Relation#includes? agora funciona corretamente com o mapa de identidade ativado.

  • #1810 Model#changed? não retorna mais verdadeiro quando os campos de hash e array somente tiverem sido acessados.

  • #1876/#1782 Permite notação de ponto de ponto em incorpora muitos critérios. (Cyril Mongogel)

  • #1745 lote corrigido limpo para trabalhar dentro da configuração de atributo.

  • #1718 Garanta a consistência de #first/#last nas relações - agora elas sempre correspondem ao primeiro/último no banco de banco de dados, mas opta por primeiro na memória.

  • #1692/#1376 Model#updateattributes e Model#update_attributes! agora aceitam opções de atribuição. (Hans Hasseuber)

  • #1688/#1207 Não exige namespace ao fornecer o nome da classe em macros de relação dentro do namespace. (Hans Hasseuber)

  • #1665/#1672 Expandir critérios complexos em seletores de critérios aninhados, como #matches. (Hans Hasseuber)

  • #1335 Não adicione critérios de classificação de ID ao primeiro/último caso já haja opções de classificação nos critérios.

  • #1321 Muitos destinos enumeráveis referenciados agora são apoiados por hash, evitando duplicatas de maneira mais eficiente.

  • #1135 DateTimes agora obtém fusos horários corretamente na desserialização.

  • #1031 Mongoid agora serializa valores em campos de array para seus valores adequados compatíveis com o Mongoid quando possível.

  • #685 A tentativa de usar o controle de versão com documentos incorporados agora criará um erro adequado alertando o desenvolvedor de que isso não é permitido.

2.6.0

Novas funcionalidades

  • #2709 Backport da funcionalidade touch do Mongoid 3.

2.5.2

Problemas resolvidos

  • #2502 Chave de cache corrigida para lidar adequadamente quando o documento não inclui Mongoid::Timestamps::Updated. (Arthur Noguardira Neves) .

2.5.1

Problemas resolvidos

  • #2492 Desempenho de chamadas em cascata de backport e correções de memória de 3.0.0-estável.

  • #2464 Backport dos atributos aninhados corrigidos para manter muitas relações na memória ao atualizar atributos. (Cris Thompson)

2.5.0

Novas funcionalidades

  • Esta é uma versão para suportar o 1.7.0 e superior mongo e BSON gems e resolve problemas que mantêm o 2.4.x série bloqueada abaixo 1.6.2

2.4.12

Problemas resolvidos

  • #2178 Certifique-se de que as chamadas de resposta destruídas sejam executadas após a substituição de uma relação incorporada.

  • #2169 Permitir que os salvamentos passem quando os documentos forem destruídos após o salvamento em um chamada de resposta de chamada de resposta.

  • #2144 A validação de exclusividade em documentos paranóia agora tem escopos adequados.

  • #2127 Não desvincule os pais de documentos incorporados à exclusão de atributos aninhados no meio.

2.4.11

Problemas resolvidos

  • Esta versão força um limite para a versão do driver mongo em 1.6.2 devido a alterações na API Mongo::Connection.from_uri , não permitindo mais opções de conexão válidas.

  • #2040 Corrigiu a interpolação incorreta para validação de presença de locale .

  • #2038 Permite que relações inversas sejam determinadas somente por chaves estrangeiras se definidas em ambos os lados, não apenas por uma declaração inverse_of.

  • #2023 Permitir a serialização de tipos dinâmicos que conflitam com os métodos principais do Ruby ainda sejam serializados.

  • # A validação de presença2008 deve atingir o banco de dados para verificar a validade se a relação na memória estiver em branco.

  • #2006 Permite excluir apenas o campo _id após a execução de uma chamada #only.

2.4.10

Problemas resolvidos

  • #2003 Não falha na geração de documento quando um documento incorporado foi armazenado como nulo no banco de banco de dados.

  • #1997 Não exclua Docs paranóia incorporados por meio de atributos aninhados quando uma chamada de chamada de resposta retornar falso.

  • #1994 dependent: :delete só atinge o banco de dados de dados uma vez para relações um para muitos e muitos para muitos, em vez de uma vez para cada documento.

  • #1987 Não insira documentos duas vezes no mapa de identidade ao carregar duas vezes dentro da unidade de trabalho.

  • # A validação de exclusividade1953 agora funciona em campos localizados.

  • #1936 Permite definir n níveis de documentos profundamente incorporados atomicamente sem mods conflitantes quando não estiver usando atributos aninhados ou documentos aninhados em uma chamada de atualização do pai.

  • #1957/#1954 Garanta que o nome do banco de dados de dados seja definido com herança. (Hans Hasseuber)

2.4.9

Problemas resolvidos

  • #1943 Garantir que a validação de numericidade funcione para grandes decimais.

  • # A validação de comprimento1938 agora funciona com campos localizados.

  • #1936 Os pushes conflitantes com outros pushs agora são manipulados corretamente.

  • #1933 Proxy#extend deve delegar até o destino, onde a extensão do próprio proxy agora é tratada por Proxy#proxy_extend.

  • #1930 Garanta que critérios complexos sejam expandidos em todas as cláusulas onde. (Hans Hasseuber)

  • #1928 A exclusão de documentos incorporados por meio de atributos aninhados agora executa um $pull com critérios de correspondência de ID em vez de um $pullAll para cobrir todos os casos. Padrões recém-adicionados anteriormente a documentos que já tinham persistido não podiam ser excluídos nesse caso, pois o documento não correspondia ao que estava no banco de banco de dados.

  • #1924/#1917 Corrige o envio de relações incorporadas com escopos padrão que não fazem escopo no novo documento. (Hans Hasseuber)

  • #1922/#1919 Soltar collections desmemoiza a collection encapsulada internamente, a fim de garantir, ao definir capped collections, que elas sejam sempre recriadas como capped. (Hans Hasseuber)

  • #1916/#1913 A validação de exclusividade não é mais afetada pelo escopo padrão. (Hans Hasseuber)

  • #1943 Garantir que a validação de numericidade funcione para grandes decimais.

2.4.8

Problemas resolvidos

  • #1892 Ao obter um erro de operação não mestre, o Mongoid deve se reconectar antes de tentar novamente a operação.

  • #1887 Não envie chamadas de resposta em cascata para filhos que não tenham a chamada de resposta de resposta definida.

  • #1882 Não expanda o critério de ID duplicado em um $and com seleções duplicadas.

  • #1878 Corrigiu os valores de aplicação padrão para não se aplicar em determinada seleção only ou without na iteração, não apenas first e last.

  • #1874 Corrigiu a constante de rejeitar todos os procedimentos em branco para lidar com valores corretamente com um valor de destruição não em branco. (Stephan Daschek)

  • #1869/#1868 Os conjuntos atômicos atrasados agora usam o caminho atômico em vez do nome de metadados para corrigir problemas de incorporação de vários níveis. (Cris Micacchi forneceu especificações)

  • #1866 Os padrões pós-processados (procs) devem ser aplicados após a vinculação do filho em um concern.build.

2.4.7

Problemas resolvidos

  • Certifique-se de que o recarregamento de documentos incorporados retenha a referência ao principal.

  • #1837 Passe sempre as opções de símbolos para o condutor.

  • #1836 Certifique-se de que as contagens de relações selecionem o documento persistente que não teve o link de chave estrangeira persistido.

  • #1820 A destruição de documentos incorporados em um embeds_many também deve remover o documento do destino _uncoped subjacente e reindexar a relação.

  • #1814 Não cascata de retornos de chamada em after_initialize.

  • #1800 Opções inválidas para a conexão mongo agora são filtradas.

  • #1785 A igualdade de maiúsculas e minúsculas foi corrigida para lidar com as verificações de instâncias corretamente.

2.4.6

Problemas resolvidos

  • #1772 Permitir pular e limitar para converter strings em inteiros. (jean bossieer)

  • #1767 Model#update_attributes aceita opções de atribuição em massa novamente. (Hans Hasseuber)

  • #1762 Criteria#any_of agora lida adequadamente com campos localizados.

  • #1758 Metadados agora retorna auto em opções para suporte de biblioteca externa.

  • #1757 Certifique-se de que a serialização converta quaisquer tipos de atributo para o tipo definido pelo campo.

  • #1756 As opções de hash serializável devem passar para Docs incorporados .

2.4.5

Problemas resolvidos

  • #1751 O registrador do Mongoid agora responde ao nível para compatibilidade com a API de registro Ruby.

  • #1744/#1750 A classificação funciona agora para campos localizados em documentos incorporados usando a API de critérios. (Hans Hasseuber)

  • # A validação de presença1746 agora mostra quais locais estavam vazios para campos localizados. (Cyril Mongogel)

  • #1727 Permitir que a notação de ponto nos critérios incorporados funcione tanto na incorporação de um quanto na incorporação de muitos. (Lyle Apparel)

  • #1723 A inicialização de chamadas de resposta deve ocorrer em cascata através das crianças sem precisar determinar se a criança foi alterada.

  • #1715 Os hashes serializáveis agora são consistentes na inclusão de documentos incorporados por ou após o salvamento.

  • #1713 Correção de === verifica ao comparar uma classe com uma instância de uma subclasse.

  • #1495 Chamadas de resposta não recebem mais os erros "super chamada fora do método" em 1.8.7 rubis.

2.4.4

Problemas resolvidos

  • #1705 Permite alterar a ordem de muitas para muitas chaves estrangeiras.

  • #1703 Atualizado em agora está versionado novamente. (Lucas Sousa)

  • #1686 Definir os metadados básicos para desvincular e vincular para relações pertencentes.

  • #1681 Tenta criar índices para modelos sem namespace se o namespace não existir para o subdiretório.

  • #1676 Permitir que o carregamento antecipado funcione como um escopo padrão.

  • #1665/#1672 Expandir critérios complexos em seletores de critérios aninhados, como #matches. (Hans Hasseuber)

  • #1668 Certifique-se de que o registrador Mongoid existe antes de chamar o aviso. (RémyCoutable)

  • #1661 Garantir que a validação de exclusividade funcione em documentos clonados.

  • #1659 Limpa conjuntos atômicos atrasados ao redefinir a mesma relação embarcada.

  • #1656/#1657 Não acesse o banco de dados de dados para validação de exclusividade se AMBOS o escopo e o atributo não tiverem sido alterados. (priyAAnk)

  • #1205/#1642 Ao limitar os campos retornados do banco de dados de dados por meio Criteria#only e Criteria#without e, posteriormente, salvar o documento. Os valores padrão não substituem mais campos excluídos.

2.4.3

Problemas resolvidos

  • #1647 serialização de DateTime quando já está UTC não é convertida para hora local.

  • #1641/#1639 Mongoid.observer.disable :all agora se comporta como a CR.

  • # Os consumidores de atualização1640 devem estar vinculados ao nome da coleção à qual persistem, não ao nome da classe.

  • Os escopos #1637/#1636 não modificam mais os escopos da classe principal ao subclassificar. (Hans Hasseuber)

  • #1629 critérios $all e $in em muitas relações incorporadas agora lida adequadamente com pesquisas de regex e elementos de comprimento variável. (Douwe Maan)

  • #1623/#1634 Os escopos padrão não quebram mais o Mongoid::Versioning. (Hans Hasseuber)

  • #1605 Corrija a regressão das respostas de salvamento, Rails 3.2

2.4.2

Problemas resolvidos

  • #1628 O campo _type pode ser incluído novamente na serialização para JSON ou xml como uma opção global com include_type_for_serialization. (Roman Sterenzon)

  • # O formato de validação1627 agora funciona corretamente com campos localizados. (Douwe Maan)

  • #1617 Os métodos de proxy de relação agora aparecem na lista de campos proibidos do Mongoid.

  • #1615 Permitir uma única configuração de host e porta para todas as execuções de especificações, substituída pela configuração MONGOID_speC_HOST e MONGOID_speC_port vars env.

  • #1610 Ao versionar documentos paranoid e a versão máxima estiver definida, exclua versões antigas da relação incorporada.

  • #1609 Permitir a repetição da conexão durante a iteração do cursor, bem como em todas as outras operações.

  • #1608 Evite erros de método ao passar IDs em atributos aninhados e os documentos não existirem.

  • #1605 Remover o aviso de depreciação em respostas de salvamento, Rails 3.2

  • #1602 Preservar estrutura de queries $and e $or ao digitar.

  • #1600 A validação de exclusividade não apresenta mais erros quando fornecida uma relação.

  • #1599 Certifique-se de que os destinos enumeráveis produzam primeiro o que está na memória ao executar #each, nem sempre o descarregado primeiro.

  • #1597 Corrija a capacidade de alterar a ordem dos campos de array com os mesmos elementos.

  • #1590 Permite serialização adequada de valores booleanos em critérios onde o campo está aninhado dentro de uma array.

2.4.1

Problemas resolvidos

  • #1593 Arrays em documentos incorporados agora são atualizados corretamente atomicamente quando modificados da versão original.

  • #1592 Não engula exceções da geração de índice na tarefa create_indexes Rake.

  • #1589 Permitir a atribuição de array vazia ao HABTM quando nenhum documento ainda estiver carregado na memória.

  • #1587 Quando um valor anterior para um campo de array era um nil explícito, agora ele pode ser redefinido atomicamente com novos valores.

  • #1585 Model#respond_to? retorna verdadeiro agora para o configurador ao permitir campos dinâmicos.

  • #1582 Permitir que valores nulos sejam definidos em arrays.

  • #1580 Permite que as arrays sejam definidas como nil após salvar, e não apenas vazias.

  • #1579 Não chame #to_a em elementos de campo definidos individualmente no critério.

  • #1576 Não atinja o banco de dados de dados na validação de exclusividade se o campo que está sendo validado não tiver sido alterado.

  • #1571 Campos com nomes alternativos obtêm todos os métodos de atributos sujos e todos os getters e setters para o nome original e o alias. (Hans Hasseuber)

  • #1568 fallback para o ambiente de desenvolvimento com aviso quando nenhum ambiente estiver configurado.

  • #1565 Para campos e chaves estrangeiras com nomes de banco de dados de dados ou Ruby não padrão, use define_method em vez de class_eval para criar os acessadores e métodos sujos.

  • #1557 A classe de estratégia interna não entra mais em conflito com modelos.

  • #1551 Documentos pai agora retornam true para Model#changed? se apenas documentos filho (incorporados) tiverem sido alterados.

  • #1547 Redefinindo filhos persistentes de um salvamento pai quando novo espera até publicar chamadas de resposta, espelhando a funcionalidade de atualização.

  • #1536 A carga ávida agora acontece ao chamar first ou last em um critério se as inclusões forem especificadas.

2.4.0

Novas funcionalidades

  • Agora, os intervalos podem ser passados para critérios #where para criar uma query $gte/$lte sob as cobertas. Person.where(dob: start_date...end_date)

  • Campos serializáveis personalizados agora podem substituir #selection para fornecer serialização personalizada para queries de critérios.

  • #1544 Os internos usam Array.wrap em vez de to_a agora, sempre que possível.

  • # A validação de presença1511 agora suporta campos localizados. (Tiago Rafa Gondo)

  • #1506 Model.set agora aceitará valores falsos e nulos. (Marten Veldthuis)

  • #1505 Model.delete_all/destroy_all agora recebe um hash : conditions ou os atributos diretamente.

  • #1504 Model.recursively_embeds_many agora aceita uma opção :cascade_callbacks. (Pavel Pravosud)

  • #1496 Mongoid agora converte strings de volta para símbolos para campos de símbolo que são salvos como strings por outro aplicação.

  • As associações #1454, #900 agora têm um retorno de chamada de resposta after_build que é executado depois que os métodos .build ou build_ são chamados. (jefffrey jones, ryan townsend)

  • # Os intervalos1451 agora podem ser qualquer valor de intervalo, não apenas números. (aupajo)

  • # A localização1448 agora é usada ao classificar. (Hans Hasseuber)

  • #1422 O Mongoid gera um erro no carregamento yaml se nenhum ambiente for encontrado. (Tom Studio)

  • #1413 $not suporte adicionado aos métodos de símbolo de critérios. (MarcWeil)

  • #1403 Adição da opção de configuração scope_overwrite_exception , cujo padrão é falso para gerar um erro ao definir um escopo nomeado com o mesmo nome de um método existente. (Cristófo Grabo)

  • #1388 model.add_to_set agora suporta adicionar múltiplos valores e executa um $addToSet com $each sob as cobertas. (Cristern Felder)

  • #1387 Adicionado Model#cache_key para uso no cache do Rails. (Seivan heidari)

  • #1380 Chamando Model.find(ID) agora converterá corretamente de e para qualquer tipo com base no tipo do campo _id .

  • #1363 Adicionadas contingências e suporte padrão para campos localizados, e capacidade adicional de obter e definir todas as traduções de uma só vez.

  • #1362 Campos com nomes alternativos agora são digitados corretamente nos critérios.

  • #1337 Campos de array, incluindo HABTM com muitas chaves estrangeiras, agora têm verificação suja mais inteligente e não executam mais um simples $set se a array tiver mudado. Se apenas itens tiverem sido adicionados à array, ela executará um $pushAll. Se os itens tiverem sido removidos, ele executará um $pullAll. Se tiverem ocorrido adições e remoções, ele executará um $set para evitar mods conflitantes.

Problemas resolvidos

  • Chamar Document#as_document em um documento congelado no Rubinius retorna os atributos em vez de nulo.

  • #1554 Dividir o aplicação de valores padrão em proc/não procs, em que os não procs são executados imediatamente durante a instanciação e os procs são executados depois que todos os outros valores são definidos.

  • #1553 As combinações de adicionar e remover valores de uma array usam um $set no conteúdo atual da array, não nos novos valores.

  • #1546 Alterações sujas devem ser retornadas em um hash com acesso indiferente.

  • #1542 A carga ávida agora respeita as opções (ou seja, pular, limitar) fornecidas aos critérios ao buscar as associações.

  • #1530 Não duplique valores adicionados a arrays por meio de rastreamento sujo se a array for um campo de chave estrangeira.

  • #1529 A chamada unscoped em associações relacionais agora funciona corretamente.

  • #1524 Permitir o acesso a relações em configuradores de campo substituídos pré-definindo valores padrão de chave estrangeira.

  • #1523 Permitir a desabilitação de observadores via disable. (Jomas Scheneider)

  • #1522 Corrigiu a tarefa de criação de índices para Rails 3.2. (Gray Manlei)

  • #1517 Corrigir documentos Mongoid para funcionar corretamente com o stub_model do RSpec. (Tiago Rafa Gondo)

  • #1516 Não duplique muitos documentos relacionais no bind.

  • #1515 O Mongoid não tenta mais serializar campos personalizados em critérios complexos por padrão.

  • #1503 Tem muitas substituições de relações agora lida com qualquer tipo de combinação de Docs novos e existentes.

  • #1502 Atributos aninhados em documentos incorporados respeitam se a criança é paranóia.

  • #1497 Use a mensagem fornecida na falha da validação de exclusividade. (Jutin Etheredge)

  • #1491 Retornar nulo quando nenhum padrão definido em campos localizados. (Tiago Rafa Gondo)

  • # O módulo1483 Enviando inclui no tempo de execução que adiciona novos campos a um documento pai, também tem os campos adicionados a subclasses.

  • #1482 A aplicação de novas opções de classificação não se mescla em critérios anteriormente encadeados. (Gerad Suyderhoud)

  • #1481 Corrija a query inválida ao acessar relações muitos-para-muitos antes que os padrões sejam definidos.

  • #1480 Tipos de campo serializados internos do Mongoid renomeados para Interno para não entrar em conflito com as classes principais Ruby em tipos serializáveis personalizados.

  • #1479 Não duplique ids em many-to-many ao usar create ou create!

  • #1469 Quando extract_id retornar nulo, remova o documento do mapa de identidade pelo seletor de critérios.

  • #1467 Definir um campo chamado metadados agora gera corretamente um erro de campo inválido.

  • #1463 Os consumidores de inserção em lote agora têm como escopo a coleção para evitar a persistência de documentos para outras coleções em chamadas de resposta que vão para o lugar errado.

  • #1462 Atribuir muitas relações por meio de atributos aninhados *_attributes= não salva automaticamente a relação.

  • #1461 Corrigiu a serialização de campos de chave estrangeira em critérios complexos para não escapar de todo o hash.

  • # O controle de versão1458 não ignora mais campos que foram protegidos contra atribuição em massa.

  • #1455, #1456 Chamar a destruição de qualquer documento agora o marca temporariamente como sinalizado para destruição até que a operação seja concluída. (Nader Akhnoukh)

  • #1453 Model#to_key deve retornar um valor quando o documento for destruído.

  • #1449 Novos documentos não são mais persistentes quando substituídos em um tem um como efeito colateral. (jasonsydes)

  • #1439 incorporado? deve retornar verdadeiro quando a relação for definida como cíclica.

  • #1433 Atributos aninhados polimórficos para 1-1 incorporados e relacionais agora são atualizados corretamente.

  • #1426 Documentos congelados agora podem ser clonados. (agrawal2001)

  • #1382 Gere o erro adequado ao criar índices por meio da tarefa raste se a definição do índice estiver incorreta. (Mathieu Ravaux)

  • #1381, #1371 O mapa de identidade agora funciona corretamente com documentos herdados. (Paul Campovese)

  • #1370 Dividir concat em arrays incorporadas em seu próprio método para lidar com o processamento em lote devido a problemas de execução da execução da chamada de resposta de resposta.

  • #1366 Os valores de array e hash agora são copiados em profundidade para rastreamento sujo.

  • #1359 Fornece a capacidade de não ter o escopo padrão aplicado a todos os escopos nomeados por meio do uso de lambdas.

  • #1333 Corrigiu erros com tipos personalizados que existem em namespaces. (Peter Gomeson)

  • #1259 Os valores padrão são tratados como sujos se forem diferentes do estado do banco de dados de dados.

  • #1255 Garanta que os documentos incorporados respeitem o escopo padrão definido.

2.3.4

  • #1445 Evite documentos duplicados na array carregada no enumerável de destino para associações relacionais.

  • #1442 Ao usar métodos create_ para tem um relacionamento, os métodos destrutivos apropriados agora são chamados ao substituir um documento existente.

  • #1431 O contexto enumerável deve ser adicionado à array carregada após a produção, para que métodos como #any? que o curto-circuito com base no valor do bloco não tem documentos extras falsamente.

  • #1418 Documentos que estão sendo carregados do banco de banco de dados para fins de revisão não são mais colocados no mapa de identidade.

  • #1399 Permite a conversão de strings para inteiros em chaves estrangeiras onde o ID é definido como int.

  • #1397 Não adicione critérios de classificação padrão primeiro se eles já existirem.

  • # A correção1394 existe? para trabalhar quando a contagem for maior que 1. (Nic Hoffman)

  • #1392 Retorne 0 em funções de agregação onde o campo é inexistente.

  • # A validação de exclusividade1391 agora funciona corretamente em documentos incorporados que usam definições de chave primária .

  • #1390 Quando o campo _type é a classe de letras minúsculas camelize antes de constantes.

  • #1383 Corrige a conversão na leitura para campos serializáveis que são subclassificados.

  • #1357 Conjuntos atômicos atrasados de update_attributes em documentos incorporados com vários níveis de profundidade agora persistem adequadamente.

  • #1326 Garantir que o documento base no HABTM tenha suas chaves salvas depois de salvar um documento filho recém-construído.

  • #1301 Não substitua os metadados de base incorporados em relações se já estiverem definidos.

  • #1221 HABTM com inverso nulo é permitido novamente em documentos incorporados.

  • #1208 Não persista automaticamente documentos filhos por meio do configurador ao definir a partir de um embedded_in.

  • #791 O documento raiz atualiza seus registros de data e hora quando apenas os documentos incorporados são alterados.

2.3.3

Problemas resolvidos

  • #1386 Dependência mongo/BSON para 1.3

  • #1377 Corrigir as funções de agregação para lidar adequadamente com valores nulos ou indefinidos. (Maxime Garcia)

  • #1373 Alerta se um escopo substituir outro escopo.

  • #1372 Nunca persista ao vincular dentro de um atributo de leitura para validação.

  • #1364 Corrigiu o recarregamento de documentos com de BSON objeto não ID .

  • #1360 Desempenho corrigido da instanciação do observador do Mongoid conectando-se aos ganchos de carga do Active Support, a laAR.

  • #1358 Erro de tipo corrigido na sincronização de muitos para muitos quando inverse_of está definido como nulo.

  • #1356 critérios $in agora podem ser encadeados a critérios não complexos na mesma chave sem erro.

  • #1350, #1351 Corrigiu erros nas conversões de string de aspas double e tilde ao parametrizar chaves.

  • #1349 Documentos Mongoid não devem explodir ao incluir Enumerable. (Jonadas Níquelas)

2.3.2

Problemas resolvidos

  • #1347 Corrija os correspondedores incorporados quando receber um valor de hash que não tenha um modificador como chave.

  • #1346 Critérios de classificação padrão de Dup ao chamar primeiro/último em um critério.

  • #1343 Ao passar nenhum argumento para Criteria#all_of retornar todos os documentos. (Cris Leishman)

  • #1339 Certifique-se de que as chamadas de resposta destruídas sejam executadas em filhos em cascata ao excluir por meio de atributos aninhados.

  • #1324 Definir inverse_of: nil em um muitos-para-muitos fazendo referência à mesma classe retorna nulo para a chave estrangeira inversa.

  • #1323 Permitir strings e símbolos como IDs na array de atributos para atributos aninhados. (Michael Bosque)

  • #1312 Definir um logger na configuração agora aceita qualquer coisa que se caracterize como um logger.

  • #1297 Não atinja o banco de dados de dados ao acessar as relações se a base for nova.

  • #1239 Permite anexar relações referenciadas em blocos de criação, publicar conjunto padrão.

  • #1236 Certifique-se de que todos os modelos estejam carregados nas tarefas de antro, para que, mesmo no modo threadsafe, todos os índices possam ser criados.

  • #736 A chamada de #reload em documentos incorporados agora funciona corretamente.

2.3.1

Problemas resolvidos

  • #1338 Chamando #find em um escopo ou relação verifica se o documento no mapa de identidade realmente corresponde a outros parâmetros do escopo.

  • #1321 HABTM não permite mais entradas ou chaves duplicadas, em vez das inconsistências anteriores.

  • #1320 Corrigiu erros no parâmetro de desempenho.

  • #1316 Foi adicionada uma tarefa Rake separada "db:mongoid:drop" para que Mongoid e SER possam coexistir. (Daniel Vartanova)

  • #1311 Corrige o problema com a serialização do campo personalizado que herda do hash.

  • #1310 O destino enumerável muitos referenciado não duplica mais documentos carregados e adicionados quando o mapa de identidade está ativado.

  • #1295 Corrigido ter vários inclui apenas executar o carregamento ansioso do primeiro.

  • #1287 A limitação máxima de versões corrigida com o controle de versão.

  • #1277 atributo_ will_change! sinaliza corretamente o atributo mesmo que nenhuma alteração tenha ocorrido.

  • #1063 Documentos paranóicos executam corretamente os retornos de chamada de destruição em destruição suave.

  • #1061 Aumente Mongoid::Errors::InvalidTime quando a serialização de tempo falhar.

  • #1002 Verifique se há IDs BSON legais ao tentar conversão.

  • #920 Permitir que as relações sejam nomeadas destino.

  • #905 Retorna o nome da classe normalizada nos metadados se a string tiver sido definida com um :: prefixo.

  • #861 accepts_nested_attributes_for não é mais necessário para definir documentos incorporados diretamente por meio de um hash ou array de hashes.

  • #857 Corrigiu a cascata de relações de dependência quando o documento base é paranóico.

  • #768 Definições de class_attribute corrigidas em todo o módulo.

  • #408 Documentos incorporados agora podem ser excluídos suaves via Mongoid::Paranoia.

2.3.0

Novas funcionalidades

  • O Mongoid agora suporta campos localizados básicos, armazenando-os sob as cobertas como um hash de locale => pares de valores. field :name, localize: true

  • #1275 Para aplicativos que padronizam o modo de segurança como true, agora você pode instruir uma única operação a persistir sem o modo de segurança por meio de #unsafely: person.unsafely.save, Person.unsafely.create. ( Matt Sanders )

  • #1256 O Mongoid agora pode criar índices para modelos em mecanismos Rails. (Caio Filipini)

  • #1228 Permita a pré-formatação de chaves compostas passando um bloco para #key. (Ben Hundlei)

  • #1222 A atribuição em massa com escopo agora é permitida. (Andrew Chayduov)

  • #1196 Os timestamps agora podem ser desativados chamada a chamada por meio do uso de #timeless: person.timeless.save, Person.timeless.create(:title => "Sir").

  • #1103 Permita que os desenvolvedores criem seus próprios critérios complexos personalizados. (Rbian Ong)

  • O Mongoid agora inclui todos os campos definidos nos resultados serializable_hash e to_json , mesmo que os campos não tenham valores para facilitar os documentos serializados de uso pelos clientes do ActiveResource.

  • O suporte para o operador $and do MongoDB está agora disponível na forma de: Criteria#all_of(*args) onde args são múltiplas expressões de hash.

  • #1250, #1058 Documentos incorporados agora podem ter suas chamadas de resposta disparadas em um salvamento pai, definindo :cascade_callbacks => true na relação. (pyromanic,PaulRosania,JakCharlton)

Principais alterações

  • O Mongoid agora depende do Active Model 3.1 e superior.

  • O Mongoid agora depende do mongo Ruby Driver 1.4 e superior.

  • O Mongoid requer MongoDB 2.0.0 e superior.

Problemas resolvidos

  • #1308 Escopo fixo das descobertas do HABTM.

  • #1300 Os modelos com namespace devem lidar com a incorporação recursiva corretamente.

  • #1299 Documentos auto-referenciados com controle de versão não falham mais quando inverse_of não está definido em todas as relações.

  • #1296 Método de construção interna renomeado para _build.

  • #1288, #1289 _id e updated_at não devem fazer parte de atributos versionados.

  • #1273 Mongoid.preload_models agora verifica se a opção de configuração de pré-carregamento está definida, onde Mongoid.load_models sempre carrega tudo. (Rian Macgeary)

  • #1244 Um relacionamento agora adere ao comportamento dependente padrão.

  • #1225 Corrigiu a persistência atrasada de documentos incorporados via $set.

  • #1166 Não carregue a configuração no Railties se nenhuma variável de ambiente estiver definida. (terence lle)

  • #1052 alias_attribute agora funciona novamente como esperado.

  • #939 Aplique atributos padrão ao fazer upcast via #becomes. (Cristo Pappas)

  • #932 Corrigiu a conversão de campos inteiros com zeros à esquerda.

  • #948 Redefina o número da versão no clone se houver versões.

  • #763 Não mescle $in arrays de critérios ao encadear escopos nomeados.

  • #730 Modelos existentes que têm relações adicionadas após a persistência dos originais agora podem ter novas relações adicionadas sem migrações.

  • #726 Documentos incorporados com chaves compostas não validam corretamente a exclusividade.

  • #582 Relações cíclicas não incorporadas agora validam corretamente a exclusividade.

  • #484 Valida a exclusividade com vários escopos de todos os tipos agora funcionam corretamente.

  • A exclusão de versões criadas com Mongoid::Versioning não dispara mais a cascata dependente nas relações.

2.2.5

  • Esta foi uma pequena versão de patch para resolver 2.2.x Erros do heroku durante a compilação de ativos.

2.2.4

  • #1377 Corrigir as funções de agregação para lidar adequadamente com valores nulos ou indefinidos. (Maxime Garcia)

  • #1373 Alerta se um escopo substituir outro escopo.

  • #1372 Nunca persista ao vincular dentro de um atributo de leitura para validação.

  • #1358 Erro de tipo corrigido na sincronização de muitos para muitos quando inverse_of está definido como nulo.

  • #1356 critérios $in agora podem ser encadeados a critérios não complexos na mesma chave sem erro.

  • #1350, #1351 Corrigiu erros nas conversões de string de aspas double e tilde ao parametrizar chaves.

  • #1349 Documentos Mongoid não devem explodir ao incluir Enumerable. (Jonadas Níquelas)

2.2.3

  • #1295 Corrigido ter vários inclui apenas executar o carregamento ansioso do primeiro.

  • #1225 Corrigiu a persistência atrasada de documentos incorporados via $set.

  • #1002 Corrija a conversão de ID do objeto BSON para verificar primeiro se é legal.

2.2.2

  • Esta versão remove a restrição de uma dependência no 1.3.x do driver mongo Ruby . Os usuários agora podem usar 1.3.x a 1.4.x.

2.2.1

Problemas resolvidos

  • #1210, #517 Permitir que as queries de relação de documento incorporado usem notação de ponto de ponto . (Scolt Ellard)

  • #1198 O destino enumerável deve usar a contagem de critérios se o carregado não tiver Docs.

  • #1164 Eliminar os erros de método in_memory restantes.

  • #1070 Permitir que os serializadores de campo personalizados tenham seus próprios construtores.

  • #1176 Permitir o acesso aos documentos principais a partir de documentos incorporados em Docs callbacks.

  • #1191 Os métodos do grupo de contexto (mín, max, soma) não retornam mais NaN, mas retornam nulo se o campo não existir ou tiver valores.

  • #1193, #1271 Sempre retornam Inteiros para campos inteiros com , # Sempre retornam Inteiros para campos inteiros com .000 precisões, não flutuações.

  • #1199 Corrigiu problemas de desempenho de hash e acesso a campo de array ao ler várias vezes.

  • #1218 Corrigido problemas com relações referenciando modelos com chaves estrangeiras inteiras.

  • #1219 Correção de vários problemas de modificação conflitantes ao enviar e extrair do mesmo documento incorporado em uma única chamada.

  • #1220 Os metadados não devem ser substituídos por nil on bind.

  • #1231 Renomeou a classe de conjunto atômico do Mongoid para Conjuntos para evitar conflitos com o Conjunto nativo do Ruby após a inclusão do documento .

  • #1232 Corrigir o acesso a modelos relacionados durante before_destroy callbacks ao cair em cascata.

  • #1234 Corrigiu problemas de sincronização de chave estrangeira do HABTM ao destruir documentos.

  • #1243 As relações polimórficas não são convertidas em IDs de objeto ao executar uma query se os ids forem definidos como strings.

  • #1247 Força Model.first a classificar por ID crescente para garantir o primeiro documento.

  • #1248 Adicionado #unscoped para incorporar muitas relações.

  • #1249 Sinalizadores de destruição em atributos aninhados agora destroem o documento para has_many em vez de apenas quebrar a relação.

  • #1272 Não modifique as opções de configuração em vigor ao criar conexões de conjunto de réplicas.

2.2.0

Novas funcionalidades

  • O Mongoid agora contém carregamento ativo na forma de Criteria#includes(*args). Isso funciona em associações has_one, has_many, requires_to e requer que o mapa de identidade seja habilitado para funcionar. Defina identity_map_enabled: true em seu mongoid.yml. Ex: Person.where(title: "Sir").includes(:posts, :game)

  • As relações agora podem levar um módulo como um valor para a opção :extend . (Roman Sterenzon)

  • As coleções limitadas podem ser criadas passando as opções para a macro #store_in : Person.store_in :people, capped: true, max: 1000000

  • Mongoid::Collection agora suporta collection.find_and_modify

  • Document#has_attribute? agora faz aliases para Document#attribute_present?

  • #930 Agora você pode desativar o registrador Mongoid por meio do mongoid.yml fazendo logger: false

  • #909 Agora geramos uma exceção Mongoid::Errors::Callback se persistir com um método bangue e uma chamada de resposta de resposta retornar falso, em vez do erro de validações não informativas de antes.

Principais alterações

  • #1173 relações has_many não excluem mais todos os documentos em um conjunto da relação (= [ doc_one, doc_two ]), mas procura a opção dependente para determinar qual comportamento deve ocorrer. :delete e :destroy se comportarão como antes, :nullify e nenhuma opção especificada anulará os documentos antigos sem excluir.

  • #1142, #767 As relações incorporadas não persistem mais atomicamente quando acessadas por meio de um conjunto de atributos pai. Isso inclui a configuração de atributos aninhados e attributes= ou write_attributes. Em seguida, as alterações filhos permanecem sujas e são atualizadas atomicamente quando o salvamento é chamado nelas ou no documento pai.

Problemas resolvidos

  • #1190 Corrigiu os erros de gemspec devido à alteração de README e changelog para marcação.

  • #1180, #1084, #955 Mongoid agora verifica os tipos de campo em vez de se o nome contiver /id/ ao tentar converter para IDs de objeto em critérios.

  • #1176 Os destinos enumeráveis devem sempre retornar os documentos na memória primeiro, ao chamar #first

  • #1175 Certifique-se de que ambos os lados de muitas relações estejam em sincronia durante a criação.

  • #1172 Relações enumeráveis referenciadas agora manipulam corretamente #to_json (Daniel Doubovkine)

  • #1040 Maior desempenho dos tempos de carregamento da classe removendo todas as chamadas delegadas para si mesmo. classe.

2.1.9

Problemas resolvidos

  • #1159 Blocos de construção corrigidos para não se cancelarem quando aninhados.

  • #1154 Não exclua documentos muitos para muitos no conjunto de array vazio.

  • #1153 Reter a referência do documento principal nas chamadas de resposta posteriores.

  • #1151 Corrija o loop infinito de validação associado em documentos com referência automática.

  • #1150 Valida associado em belongs_to é false por padrão.

  • #1149 Configuração de metadados corrigidos nas relações belongs_to .

  • #1145 O inverso dos metadados deve retornar nil se inverse_of foi definido como nil.

  • #1139 Alvos enumeráveis agora quack como arrays.

  • #1136 A definição belongs_to pai como nil não exclui mais o pai.

  • #1120 Não ligue para in_memory relações se elas não responderem a ela.

  • #1075 Defina self em procs padrão para a instância do documento .

  • #1072 Os atributos de escrita para documentos aninhados podem usar um hash ou array de hashes.

  • #990 Documentos incorporados podem usar um único embedded_in com várias definições pai.

2.1.8

Problemas resolvidos

  • #1148 Corrigiu respond_to? em todas as relações para retornar corretamente.

  • #1146 Adicionado de volta a verificação de campos destrutivos Mongoide ao definir campos.

  • #1141 Conversões fixas de valores nil em critérios.

  • #1131 Verificação da paginação correta do Mongoid/Kaminari.

  • #1105 Corrigiu o consumidor de atualização atômica a ser definido como escopo para a classe.

  • #1075 self em lambdas e procs padrão agora faz referência à instância do documento .

  • #740 embedded_object_id Parâmetro de configuração removido.

  • #661 Cache de metadados corrigido em documentos incorporados.

  • #595 Sinalização de recarga de relação corrigida.

  • #410 Mover documentos de uma relação para outra agora funciona como esperado.

2.1.7

Esta foi uma versão específica para corrigir MRI 1.8.7 quebras introduzidas por 2.1.6.

2.1.6

Problemas resolvidos

  • #1126 Corrigir a configuração de relações com outros proxies de relação.

  • #1122 Os campos de hash e array agora sinalizam corretamente como sujos no acesso e na alteração.

  • #656 Corrigiu as relações de quebra de recarga ao desconfigurar associações já carregadas.

  • #647 Prefira #unset a #remove_attribute para remover valores.

  • #290 Verificar pushes em documentos profundamente incorporados.

2.1.5

Problemas resolvidos

  • #1116 Filhos incorporados retêm referência ao pai em chamadas de resposta destruídas.

  • #1110, #1115 Não memoize auxiliares relacionados a metadados em documentos.

  • #1112 db:create_indexes não indexa mais subclasses várias vezes.

  • #1111, #1098 Não defina _id em operações $set .

  • # O atributo de atualização1007 rastreia adequadamente as alterações de array.

2.1.4

Esta foi uma versão específica para obter um gemspec gerado por Synch, para que nenhum erro de análise ocorresse nos rubis que usavam o novo analisador YAML.

2.1.3

Problemas resolvidos

  • #1109 Validações corrigidas que não carregam um para o outro na memória.

  • #1107 Mongoid não quer mais mongoid/railtie necessários em application.rb.

  • #1102 Exclusão de atributos aninhados corrigidos.

  • # O Recarregamento de1097 agora executa after_initialize chamadas de resposta.

  • #1079 Incorpora muitos documentos e não duplica mais.

  • #1078 Critérios de array corrigidos correspondentes em documentos incorporados.

  • #1028 Implemente com escopo em relações um-para-muitos e muitos-para-muitos.

  • #988 A limpeza de muitos para muitos não exclui mais os documentos filhos.

  • #977 As relações de salvamento automático também funcionam por meio de atributos aninhados.

  • # A incorporação recursiva972 agora lida com o namespace nos nomes gerados.

  • #943 Não substitua Document#attributes.

  • #893 A contagem de verificação não está armazenando em cache em relações de muitos para muitos.

  • #815 Verifique se o after_initialize está sendo executado no local correto.

  • #793 Verifique se os escopos any_of estão conectados corretamente com qualquer outro escopo.

  • #776 Corrigiu a qualidade do caso mongoid ao lidar com subclasses.

  • #747 Critérios complexos corrigidos usando suas chaves para renderizar seu valor de string.

  • #721 #safely agora gera corretamente erros de validação quando eles ocorrem.

2.1.2

Problemas resolvidos

  • #1082 nomes alternativos size e length a count nos critérios. (AdamGreen)

  • #1044 Quando várias relações forem definidas para a mesma classe, sempre retorne o inverso padrão primeiro se inverse_of não estiver definido.

  • #710 Atributos aninhados aceitam id e _id em hashes ou arrays.

  • #1047 Ignorar nil valores passados para embeds_man push e substituição. (Dehard Bale)

2.1.1

Problemas resolvidos

  • #1021, #719 As relações de muitos para muitos não trigger queries adicionais no banco de dados de dados ao enviar novos documentos.

  • #607 Chamar create em grandes associações não carrega a relação inteira.

  • #1064 Mongoid::Paranoia deve respeitar unscoped e scoped.

  • #1026 model#update_attribute agora pode atualizar booleanos para false.

  • #618 A biblioteca XML de quebra quebra o Mongoid adicionando #attributes o método à String classe . (Steven mcgminty)

2.1.0

Principais alterações

  • O Mongoid agora requer MongoDB 1.8.x para suportar adequadamente as operações atômicas #bit e #rename .

  • O suporte tradicional ao trabalho escrava foi removido do Mongoid. Os conjuntos de réplicas devem ser usados no lugar das configurações tradicionais de mestre e escrava.

  • A serialização do campo personalizado mudou. Consulte serializável para alterações.

  • O rastreamento de atributos sujos foi alterado para usar o ActiveModel, isso traz muitas correções de bugs e alterações:

  • #756 Depois das chamadas de resposta e dos observadores, veja o que foi alterado em vez de as alterações apenas feitas em anterior_changes

  • #434 Os documentos agora são sinalizados como sujos quando novos ou o estado na instanciação difere do estado do banco de dados de dados. Isso é consistente com o ActiveRecord.

  • #323 Mongoid agora suporta [campo]_ will_change! de ActiveModel::Dirty

  • O pré-carregamento do modelo Mongoid no modo de desenvolvimento agora tem como padrão false.

  • :autosave => true em associações relacionais agora economiza na atualização e na criação.

  • O Mongoid agora tem um mapa de identidade para queries find_by_id simples. Consulte o site para obter documentação.

Novas funcionalidades

  • # Os campos1067 agora aceitam um atributo :versioned para poder desabilitar quais campos são versionados com Mongoid::Versioning. (Jim Benton)

  • #587 Preferência de pedido adicionada a muitas e muitas associações. (Gregory Man)

  • Capacidade adicionada de encadear declarações order_by . (Gregory Man)

  • #961 Permite que opções arbitrárias Mongo::Connection passem pelo objeto Mongoid::Config::Database . (Morg Nelson)

  • Habilite o autosave para muitas referências. (Dave Kupinski)

  • As seguintes operações atômicas explícitas foram adicionadas: Model#bit, Model#pop, Model#pull, Model#push_all, Model#rename, Model#unset.

  • Adicionadas traduções de exceção para Hindu. (Sukeerti adiga)

Problemas resolvidos

  • #974 Corrija attribute_present? para funcionar corretamente, então o valor do atributo é false, graças a @nichoffman. (Gregory Man)

  • # A tarefa de criação de índices960 não está reconhecendo muitos modelos mongoid porque tem problemas para descobrir os nomes dos modelos a partir dos nomes dos arquivos. (Tovias Schellottke)

  • # A exclusão874 de uma referência MM é unilateral. (nichoffman, davekrupinski)

  • Substitui class_inheritable_hash obsoleto descartado nas ferrovias 3.1+. (Konsstantin Shabanova)

  • Corrige o estado inconsistente ao substituir uma relação de muitos para muitos inteira.

  • Não substitua os atributos herdados ao adicionar a herança de campo de subclasse. (Dave Kupinski)

  • #914 Consultando documentos incorporados com o seletor $or . (Max Golovnia)

  • #514 Corrige a ordenação de documentos com extensões de relação. (Cris Grigo)

  • Metadata#extension agora retorna um Module, em vez de Proc, quando uma extensão é definida.

  • #837 Quando allow_dynamic_fields é definido como false e carrega um documento incorporado com um campo não reconhecido, uma exceção é gerada.

  • #963 Inicialização de array de documentos incorporados por meio de regressão de hash (Ccris Grigo, Mongo Diphyllum)

  • Mongoid::Config.reset redefine as opções para os valores padrão.

  • Mongoid::Fields.defaults é memoizado para instanciação mais rápida de modelos.