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
-
MONGOID-3020 teste adicionado para mostrar que não é mais um problema.
-
MONGOID-3025 teste adicionado para mostrar que não é mais um problema.
-
MONGOID-3061 Não é mais um problema.
-
MONGOID-3073 teste adicionado para mostrar que não é mais um problema.
-
MONGOID-3085 teste adicionado para mostrar que não é mais um problema.
-
MONGOID-3101 Não é mais um problema.
-
MONGOID-3160 Não é mais um problema.
-
MONGOID-3176 Não é mais um problema.
-
MONGOID-3214 teste adicionado para mostrar que não é mais um problema.
-
MONGOID-3296 Adicionar chamada de resposta de resposta de atualização para counter_cache.
-
MONGOID-3326 teste adicionado para mostrar que não é mais um problema.
-
MONGOID-3361 Não é mais um problema.
-
MONGOID-3365 teste adicionado para mostrar que não é mais um problema.
-
MONGOID-3402 Aplique opções de persistência ao pai.
-
MONGOID-3524 Não é mais um problema.
-
MONGOID-3529 O teste já existe mostrando que não é um problema.
-
MONGOID-3543 O teste já existe mostrando que não é um problema.
-
MONGOID-3611 teste adicionado para mostrar que não é mais um problema.
-
MONGOID-3650 Não é mais um problema.
-
MONGOID-3826, MONGOID-4109 Corrigir vazamentos de atemporalidade.
-
MONGOID-3946 teste adicionado para mostrar que não é mais um problema.
-
MONGOID-3969 teste adicionado para mostrar que não é mais um problema.
-
MONGOID-3971 Não é um problema.
-
MONGOID-3979 Não é um problema, já existem testes.
-
MONGOID-3985 Não é um problema.
-
MONGOID-4078O comportamento é pretendido.
-
MONGOID-4079 Não é um problema.
-
MONGOID-4088 Contabiliza a notação de ponto do subdocumento com resultados #pluck.
-
MONGOID-4098 Corrigido por uma alteração no driver Ruby. Consulte RUBI-1029.
-
MONGOID-4101 Não é um problema.
-
MONGOID-4106 Não é um problema.
-
MONGOID-4110 Não é um problema.
-
MONGOID-4119 Garantir que o seletor de critérios se torne valor do operador de pipeline.
-
MONGOID-4121 Não é um problema.
-
MONGOID-4123 Corrigido como resultado do MONGOID-4159.
-
MONGOID-4125 Certifique-se de que nenhum escopo referenciado em procs seja aplicado.
-
MONGOID-4132 Não é um problema.
-
MONGOID-4157 Corrigido pela versão 2.1.2 do driver Ruby.
-
MONGOID-4162 Adaptar mapeamentos de opção de índice ao novo driver. (@Nelsomat)
-
MONGOID-3737 teste adicionado para mostrar que não é mais um problema.
-
MONGOID-3621 Não é um problema.
-
MONGOID-3551 Não é um problema.
-
MONGOID-3696 teste adicionado para mostrar que não é mais um problema.
-
MONGOID-3858 teste adicionado para mostrar que não é mais um problema.
-
MONGOID-3672 Não é um problema.
-
MONGOID-4172 Use o operador posicional somente no aninhamento profundo do nível 1 .
-
Adicionado certificado público ao repositório e assina a joia se a chave privada estiver presente
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 porclient
. Isso inclui a configuração do mongoid.yml, as opçõesstore_in
e todas as exceções e módulos comSession
no nome. -
find_and_modify
foi removido e substituído por 3 opções:find_one_and_update
,find_one_and_delete
efind_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
elast
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 usandoDocument#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}
emfind_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 paraDocument#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. UseDocument.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 paraupdate
. -
#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 usarwrite_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 denominadaindex_specifications
na classe que contém uma lista de objetosIndexable::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 paramongoid.load-config
. -
#2656
rake db:reseed
agora érake db:reset
(ArthurNeves) -
#2648
Boolean
se tornaMongoid::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 classeattr_accessible
foi removido. Os parâmetros Mongoid e Forte devem funcionar bem para proteção de atribuição em massa. -
delete_all
edestroy_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 erroMongoid::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 comotrue
, 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 umNoMethodError
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?
eempty?
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
eModel.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
eu_at
, que também são nomeados comocreated_at
eupdated_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!
eCriteria#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
eCriteria#first_or_initialize
. É o mesmo quefirst_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
eCriteria#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
eCriteria#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 :albums, after_add: :notify_labels has_many :followers, before_remove: ->(band, follower){ notify_unfollow(follower) } end
-
#2157
Criteria#update
eCriteria#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
oudestroy_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<<
oupush
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
oufind_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 retorna0
em vez denil
. -
#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?
edestroyed?
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
oulast
, 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 umembeds_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
eMarshal.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 umlast
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 nomenil
. -
#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
eupdate_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 deClass#model_name
ao definir tipos polimórficos casomodel_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 deorderby
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 denil
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çõeshas_many
ehas_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, ondeCriteria#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
ourecord
. -
#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 valoresBigDecimal
. -
#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 paraCriteria.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 chamardocument.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
elength
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
eCriteria#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
esize
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 :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 :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
eModel.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 :engine, class_name: "Motor" end class Motor include Mongoid::Document :machine, class_name: "Car" end car = Car.new car.engine = Motor.new # raises an InverseNotFound error.
-
# 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 :albums :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 umMongoid::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 ocount
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 deModel.pre_processed_defaults
eModel.post_processed_defaults
.Band.pre_processed_defaults Band.post_processed_defaults
-
Model.identity
eModel.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
emodel.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
eunsafely
foram removidos. Agora usewith
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 usarModel#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 hashesHash[object]
(to_hash no objeto) A serialização de números inteiros sempre retorna um int viato_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 deDocument#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 parasave
.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
ouModel#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
eunloaded
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
eModel#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 porProxy#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
ouwithout
na iteração, não apenasfirst
elast
. -
#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
eCriteria#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
paraModel#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
oulast
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 deto_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
oubuild_
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
eto_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. Definaidentity_map_enabled: true
em seumongoid.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 paraDocument#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=
ouwrite_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
seinverse_of
foi definido comonil
. -
#1139 Alvos enumeráveis agora quack como arrays.
-
#1136 A definição
belongs_to
pai comonil
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 emapplication.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
elength
acount
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 paraembeds_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 respeitarunscoped
escoped
. -
#1026
model#update_attribute
agora pode atualizar booleanos parafalse
. -
#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 comMongoid::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 objetoMongoid::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 umModule
, em vez deProc
, quando uma extensão é definida. -
#837 Quando
allow_dynamic_fields
é definido comofalse
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.