개요

최신 버전으로 업그레이드하는 방법에 대한 지침은 mongoid.org 를 참조하세요.

버전 5.0.2 기준, 변경 로그는 Github 릴리스를 참조하세요.

5.0.1

해결된 문제

  • MONGOID-3020 더 이상 문제가 되지 않는다는 것을 보여주기 위해 테스트가 추가되었습니다.

  • MONGOID-3025 더 이상 문제가 되지 않는다는 것을 보여주기 위해 테스트가 추가되었습니다.

  • MONGOID-3061 더 이상 문제가 되지 않습니다.

  • MONGOID-3073 더 이상 문제가 되지 않는다는 것을 보여주기 위해 테스트가 추가되었습니다.

  • MONGOID-3085 더 이상 문제가 되지 않는다는 것을 보여주기 위해 테스트가 추가되었습니다.

  • MONGOID-3101 더 이상 문제가 되지 않습니다.

  • MONGOID-3160 더 이상 문제가 되지 않습니다.

  • MONGOID-3176 더 이상 문제가 되지 않습니다.

  • MONGOID-3214 더 이상 문제가 되지 않는다는 것을 보여주기 위해 테스트가 추가되었습니다.

  • MONGOID-3296 counter_cache에 대한 업데이트 콜백 을 추가합니다.

  • MONGOID-3326 더 이상 문제가 되지 않는다는 것을 보여주기 위해 테스트가 추가되었습니다.

  • MONGOID-3361 더 이상 문제가 되지 않습니다.

  • MONGOID-3365 더 이상 문제가 되지 않는다는 것을 보여주기 위해 테스트가 추가되었습니다.

  • MONGOID-3402 상위 항목에 지속성 옵션을 적용합니다.

  • MONGOID-3524 더 이상 문제가 되지 않습니다.

  • MONGOID-3529 테스트가 이미 존재하며 문제가 아님을 보여줍니다.

  • MONGOID-3543 테스트가 이미 존재하며 문제가 아님을 보여줍니다.

  • MONGOID-3611 더 이상 문제가 되지 않는다는 것을 보여주기 위해 테스트가 추가되었습니다.

  • MONGOID-3650 더 이상 문제가 되지 않습니다.

  • MONGOID-3826, MONGOID-4109 Timeless 누수를 수정합니다.

  • MONGOID-3946 더 이상 문제가 되지 않는다는 것을 보여주기 위해 테스트가 추가되었습니다.

  • MONGOID-3969 더 이상 문제가 되지 않는다는 것을 보여주기 위해 테스트가 추가되었습니다.

  • MONGOID-3971 문제가 아닙니다.

  • MONGOID-3979 문제가 아니며, 테스트가 이미 존재합니다.

  • MONGOID-3985 문제가 아닙니다.

  • MONGOID-4078 동작을 의도한 것입니다.

  • MONGOID-4079 문제가 아닙니다.

  • MONGOID-4088 #puck 결과가 있는 하위 문서 점 표기법 을 설명합니다.

  • MONGOID-4098 Ruby 운전자 를 변경하여 수정되었습니다. RUBY-1029 를 참조하세요.

  • MONGOID-4101 문제가 아닙니다.

  • MONGOID-4106 문제가 아닙니다.

  • MONGOID-4110 문제가 아닙니다.

  • MONGOID-4119 기준 선택기가 파이프라인 연산자 값이 되는지 확인합니다.

  • MONGOID-4121 문제가 아닙니다.

  • MONGOID-4123 MONGOID-4159 의 결과로 수정되었습니다.

  • MONGOID-4125절차 에서 참조된 범위가 적용되지 않았는지 확인합니다.

  • MONGOID-4132 문제가 아닙니다.

  • MONGOID-4157 Ruby 드라이버 버전 2.1.2 에 의해 수정되었습니다.

  • MONGOID-4162 인덱스 옵션 매핑을 새 운전자 에 맞게 조정합니다. (@Nielsomat)

  • MONGOID-3737 더 이상 문제가 되지 않는다는 것을 보여주기 위해 테스트가 추가되었습니다.

  • MONGOID-3621 문제가 아닙니다.

  • MONGOID-3551 문제가 아닙니다.

  • MONGOID-3696 더 이상 문제가 되지 않는다는 것을 보여주기 위해 테스트가 추가되었습니다.

  • MONGOID-3858 더 이상 문제가 되지 않는다는 것을 보여주기 위해 테스트가 추가되었습니다.

  • MONGOID-3672 문제가 아닙니다.

  • MONGOID-4172 1 레벨 딥 중첩에서만 위치 연산자 를 사용합니다.

  • 비공개 키가 있는 경우 리포지토리에 공개 인증서를 추가하고 gem에 서명했습니다.

5.0.0

주요 변경 사항(이전 버전과 호환되지 않음)

  • Mongoid는 이제 Moped 대신 공식 mongo Ruby 드라이버 2.x를 사용합니다.

  • 대부분의 운전자 별 구성 옵션이 변경되었습니다. 새로운 옵션은 여기 에서 확인하세요.

  • 이제 session 에 대한 모든 참조가 client 로 대체되었습니다. 여기에는 mongoid.yml 구성, store_in 옵션, 이름에 Session 가 포함된 모든 예외 및 모듈이 포함됩니다.

  • find_and_modify 이 제거되고 3 옵션으로 대체되었습니다: find_one_and_update, find_one_and_deletefind_one_and_replace.

  • text_search 2.6 부터 쿼리에서 $text 옵션이므로 제거되었습니다.

  • Mongoid는 더 이상 MongoDB 2.2 을(를) 지원하지 않습니다 - 이제 2.4 이상에서만 지원됩니다.

  • #3768 firstlast 는 정렬 옵션이 제공되지 않은 경우 더 이상 _id 정렬을 추가하지 않습니다. 문서 가 첫 번째 또는 마지막임을 보장하려면 이제 명시적 정렬을 포함해야 합니다.

  • Document#deleted? 별칭이 제거된 경우 Document#destroyed? 을(를) 계속 사용하세요.

새로운 기능

  • #4016 원자 조작을 위한 필드에 비공개 및 보호 설정자를 허용합니다. (롭 스미스)

  • #3985 {upsert: true} 에서 를 사용할 때 nil을 find_and_modify 반환합니다(에이드리언 시아미).

  • #3963 확장 JSON 객체 ID를 find 로 전달하도록 허용합니다.

  • #3846 기준에 사용된 것이 없는 경우 #puck을 허용합니다. (브라울리오 마르티네즈)

해결된 문제

  • #4091 슈퍼클래스에 정의된 범위를 호출할 때 하위 클래스 컨텍스트를 사용합니다. (에드가스 베이가트)

  • #4075 실제로 제거되는 각 인덱스 에 특정한 인덱스 제거 로깅을 작성했습니다.

  • #4071 반복 시 추가된 문서를 확인하기 위해 열거 가능한 관계를 로드하는 문제를 수정했습니다.

  • #4077 이제 많은 관계에 열거 가능이 포함됩니다.

  • #4052 값이 없는 현지화된 필드의 고유성 유효성 검사 를 수정했습니다.

  • #4033 원자성 업데이트에서 $ 위치 연산자 의 모든 사용을 제거했습니다.

  • #4030 복제/복제 예외는 동적 속성을 자동으로 포함합니다.

  • #4005 Rails 환경이 없는 Rails 구성 요소에 mongoid가 포함되는 문제를 수정했습니다.

  • #3993 Mongoid::Atributes::Dynamic을 사용하지 않고 store_as를 사용하는 내장된 문서에 대해 dup/clone 가 실패하는 문제를 수정합니다.

  • #3991 #changed를 호출한 후 내장된 문서가 변경된 문서로 표시되지 않던 문제를 수정했습니다. 및 하위 요소를 수정하는 단계를 포함합니다.

  • #3874 컨텍스트에 스냅샷 옵션을 추가합니다.

  • #3868 레이크 작업에서 모델을 로드하면 이제 Rails 경로가 확장됩니다.

  • #3764 열거 가능한 대상에 대한 case 성명서 검사를 수정했습니다.

  • #3740 메서드만 사용하거나 사용하지 않을 때 Missing attribute: '_id' 오류를 수정합니다(dx7).

  • #3631 하위 생성 후 before_save 콜백 이 두 번 호출될 수 있는 문제 수정

  • #3599 하위 클래스에서 슈퍼클래스의 기본값 범위가 애플리케이션 되는 문제를 수정했습니다.

  • #3104 첫 번째/마지막을 올바른 순서로 확인하도록 열거 가능한 대상을 수정했습니다.

4.0.2

새로운 기능

  • #3931 #find_or_create_by를 추가합니다! 메서드를 여러 연관 관계에 적용합니다. (Tom Beynon)

  • #3731 find_by 추가! 메서드. (길예르모 이과란)

해결된 문제

  • #3722 #store_in과 #with를 결합할 때는 올바른 데이터베이스 이름을 사용하세요. (아서 네브스)

  • #3934 find_by를 수행할 때 정렬을 적용 하지 않습니다. (아서 네브스)

  • #3935 컨텍스트 메모리에서 여러 필드 정렬을 수정합니다. (chamnap)

  • #3904 BSON::Document#symbolize_keys는 키를 기호로 반환해야 합니다. (아서 네브스)

  • #3948 Rails 4.2 에서 문서 키를 올바르게 기호화하기 위해 remove_undefined_indexes를 수정합니다. (아담 워벨)

  • #3626 Document#to_key는 ObjectId 를 string 로 반환해야 해당 ID 를 사용하여 다시 쿼리 할 수 있습니다. (아서 네브스)

  • #3888 raise UnknownAttributeError when 'set' is called on non existing field and Mongoid::Attributes::Dynamic is not included in model. (슈웨타 케일)

  • #3889 ' 설정하다 '을(를) 사용하면 Mongoid::Attributes::Dynamic이 모델에 포함될 때 존재하지 않는 필드 의 값을 설정하다 수 있습니다. (슈웨타 케일)

  • 저장 시 유효성 검사3812 수정

4.0.1

해결된 문제

  • #3911 'parent'라는 이름의 관계를 수정합니다. (nkriege)

  • #3792/#3881 #id를 오버로드할 때 발생하는 문제를 방지하기 위해 #id 대신 # _id 에 대한 많은 내부 호출을 수정했습니다(Gauthier Delasroix).

  • #3847 컬렉션 에 첫 번째 쿼리 배치 보다 더 많은 문서가 있는 경우 'QueryCache#get_more' 결과를 수정합니다. (Angelica Korsun)

  • #3684 only() 범위를 사용할 때 MissingAttributeError를 발생시키지 않습니다. (아서 네브스)

  • #3703 puck 메서드는 값을 압축해서는 안 됩니다. (Arthur Neves)

  • #3773 cache_key 타임스탬프에 일반 초 대신 나노초를 사용합니다. (Máximo 무시니)

4.0.0

주요 변경 사항(이전 버전과 호환되지 않음)

  • #3320 데이터베이스 레이크 작업에 대한 Rails 종속성을 제거합니다. (아서 네브스)

    Rails를 사용할 때 모든 db:* 레이크 작업은 이전과 동일하게 작동합니다. Rails가 아닌 경우 다음을 사용하여 데이터베이스 작업을 로드하세요.

    load 'mongoid/tasks/database.rake'
    
  • Mongoid 4 는 이제 MongoDB 2.4.0 이상만 지원합니다.

  • Document#metadata 일반적인 충돌을 방지하기 위해 이름이 Document#relation_metadata 으)로 변경되었습니다. Relation proxies also have this renamed to the same as well.

  • 이제 범위와 기본값 범위는 모두 lambdas 또는 procs 내에서 정의되어야 합니다.

  • skip_version_check 구성 옵션이 제거되었습니다.

  • IdentityMap이 제거되었습니다. (아서 네브스)

  • 선행 로드 재작업. 이제 선행 로드는 관련 문서를 로드하기 위해 ID 맵이 필요하지 않습니다. 설정하다 의 프리로더는 .includes에 전달된 연관 관계를 선행 로드할 수 있습니다. 메서드. (아서 네브스)

  • 이제 Mongoid는 핵심 드라이버가 제공하는 새로운 읽기 설정을 지원합니다. 여기에는 다음이 포함됩니다:

    • :primary: 항상 프라이머리 노드 에서 읽습니다. (기본값)

    • :primary_preferred: 프라이머리 를 먼저 시도하고, 사용할 수 없는 경우 세컨더리 를 시도합니다.

    • :secondary: 항상 세컨더리 노드 에서 읽습니다.

    • :secondary_preferred: 먼저 세컨더리 를 시도하고, 사용할 수 없는 경우 프라이머리 를 시도합니다.

    • :nearest: 지연 시간 이 가장 짧은 노드 에서 읽기를 시도합니다.

    샘플 구문:

    Person.with(read: :secondary).first
    

    :consistency 옵션은 더 이상 유효하지 않으므로 지금 :read 옵션을 사용하세요.

  • Mongoid는 이제 모든 쓰기를 전파로 기본 설정했으며(이전의 '안전 모드') 이제 다른 전파 의미 체계를 갖습니다.

    • { w: -1 }: 쓰기를 확인하지 않고 네트워크 오류를 발생시키지 않습니다.

    • { w: 0 }: 쓰기를 확인하지 않고 네트워크 오류를 발생시킵니다.

    • { w: 1 }: 프라이머리 노드 에서 쓰기를 확인합니다. (기본값)

    • { w: n }: n개의 노드에서 쓰기를 확인합니다.

    • { w: "majority" }: 대부분의 노드에서 쓰기를 확인합니다.

    샘플 구문:

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

    :safe 옵션은 더 이상 유효하지 않습니다. 이제 :write 옵션을 사용하세요.

  • #3230 이제 배열 및 해시 필드에서 값을 허용하는 대신 올바른 유형이 설정하다 되고 있는지 확인합니다. (로드리고 사이토)

  • #3043/#2949 지속성 옵션의 내부를 재작업했습니다. (아서 네브스)

  • Mongoid에는 이제 활성 모델 4 이상이 필요합니다.

  • Document#set 이제 이전 (field, value) 인수 대신 해시 형식의 여러 속성을 허용합니다. 이제 이 작업에서 필드 별칭 및 타입캐스팅도 지원됩니다.

    document.set(name: "Photek", likes: 10000)
    
  • Document#rename 이제 이전 (field, value) 인수 대신 해시 형식의 여러 속성을 허용합니다. 필드 별칭이 지원됩니다.

    document.rename(first_name: "fn", last_name: "ln")
    
  • Document#inc 이전에는 한 번에 하나의 값만 증가시킬 수 있었던 대신 이제 해시 형식의 여러 속성을 허용합니다. 별칭 및 직렬화가 지원됩니다.

    document.inc(score: 10, place: -1, lives: -10)
    
  • Document#pop 이전에는 한 번에 하나의 값만 팝할 수 있었던 대신 이제 해시 형식의 여러 속성을 허용합니다. 별칭 및 직렬화가 지원됩니다.

    document.pop(names: 1, aliases: -1)
    
  • Document#bit 한 번에 하나의 연산 설정하다 만 적용 할 수 있었던 대신 이제 해시 형식의 여러 속성을 허용합니다. 별칭 및 직렬화가 지원됩니다.

    document.bit(age: { and: 13 }, score: { or: 13 })
    
  • Document#pull 이전에는 한 번에 하나의 값만 가져올 수 있었던 대신 이제 해시 형식의 여러 속성을 허용합니다. 별칭 및 직렬화가 지원됩니다.

    document.pull(names: "James", aliases: "007")
    
  • Document#pull_all 이전에는 한 번에 하나의 값만 가져올 수 있었던 대신 이제 해시 형식의 여러 속성을 허용합니다. 별칭 및 직렬화가 지원됩니다.

    document.pull_all(names: ["James", "Bond"], aliases: ["007"])
    
  • Document#push_all MongoDB 2.4 에서 더 이상 사용되지 않습니다. 대신 Document.push 를 사용합니다.

  • Document#push 이제 해시 형식의 여러 속성을 허용하며 $each와 함께 $push를 통해 단일 값 또는 여러 값을 필드 로 푸시하는 작업을 처리하다 할 수 있습니다. 별칭 및 직렬화가 지원됩니다.

    document.push(names: "James", aliases: [ "007", "Jim" ])
    
  • Document#add_to_set 이제 해시 형식의 여러 속성을 허용하며 별칭 및 직렬화가 지원됩니다.

    document.add_to_set(names: "James", aliases: "007")
    
  • 이제 기준 원자 조작 API 가 단일 문서 원자 API 의 예시 사항과 일치하도록 변경되었습니다.

    Band.where(name: "Depeche Mode").inc(likes: 10, followers: 20)
    
  • #3399 #create 및 #create! on 관계는 이제 속성 배열 을 첫 번째 매개 변수로 사용하여 한 번에 여러 문서를 만들 수 있습니다.

    person.addresses.create([{ street: "Bond" }, { street: "Upper" }])
    person.addresses.create!([{ street: "Bond" }, { street: "Upper" }])
    
  • #3141 rake db:test:prepare 는 이제 Mongoid가 환경에서 유일한 ODM/ORM인 경우 정의된 모든 인덱스를 설정합니다.

  • #3138 update_attributes 은 이제 update 을(를) 호출하기만 하면 액세스할 수 있습니다.

  • #3083 모델에 명시적으로 정의되지 않은 인덱스를 데이터베이스 에서 제거 하기 위해 새로운 레이크 작업 rake db:mongoid:remove_undefined_indexes 이 추가되었습니다. (에이단 펠드만)

  • #3029 다형성 관계가 있는 단일 사용 사례 에 추가되는 relation_field 필드 가 제거되었습니다. 따라서 이전에는 다음이 작동합니다.

    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
    

    이제 적절한 마이그레이션 을 사용하여 다음과 같이 모델링해야 합니다.

    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 이(가) 이제 write_attribute 을(를) 사용하는 대신 setter 메서드를 올바르게 호출합니다.

  • #3060 원자적으로 차단을 허용하여 동일한 유형의 여러 호출을 허용합니다. (브라이언 노튼)

  • #3037 모델 인덱스는 더 이상 모델 클래스의 index_options 해시에 저장되지 않습니다. 대신 이제 Indexable::Specification 객체 목록이 포함된 클래스에 index_specifications 라는 배열 이 존재합니다. 이는 키가 같지만 순서가 다른 인덱스의 경우를 올바르게 처리하다 할 수 있도록 하기 위한 것입니다.

  • #2956 쿼리에 대한 캐싱은 이제 cache 이(가) 구체적으로 호출된 경우에만 발생합니다. (아서 네브스)

  • #2659 Mongoid::Railtie 이(가) 이제 하나의 이니셜라이저만 올바르게 사용하며 이름이 mongoid.load-config)로 변경되었습니다.

  • #2656 rake db:reseed 은(는) 이제 rake db:reset (아서 네브스)입니다.

  • 다른 라이브러리에서 일반적으로 사용되는 클래스로 글로벌 네임스페이스 를 오염시키는 것을 방지하기 위해 #2648 Boolean 이(가) Mongoid::Boolean 이(가) 됩니다.

  • #2603 이제 setter의 반환 값은 setter를 호출하거나 send를 사용하든 관계없이 항상 항상 설정하다 값입니다.

  • #2597 Mongoid::Observer 은 Rails 4 에 따라 제거되었습니다.

  • #2563 이제 모델별 수준에서 동적 필드가 허용되므로 allow_dynamic_fields 구성 옵션이 제거되었습니다. 모델에서 동적 필드를 사용하려면 각 필드에 모듈을 포함하기만 하면 됩니다. (조시 마르틴)

    class Band
      include Mongoid::Document
      include Mongoid::Attributes::Dynamic
    end
    
  • #2497 to_json 을(를) 호출해도 더 이상 운전자 의 반환 값이 변조되지 않으며, 이전에는 string 표현만 반환하는 대신 { "$oid" : object_id.to_s } 를 적절하게 반환합니다.

  • #2433 Mongoid::Paranoia 이(가) 제거되었습니다.

  • #2432 Mongoid::Versioning 이(가) 제거되었습니다.

  • #2218 이제 기본값 범위가 있는 문서를 만들거나 인스턴스화할 때 범위가 복잡하지 않은 경우 기본값 범위가 문서 에 적용 .

  • #2200 대량 할당 보안이 이제 Rails 4 의 동작을 미러링합니다. without_protection 옵션도 제거되었습니다. attr_accessible 클래스 메서드가 제거되었습니다. 대량 할당 보호에는 Mongoid 및 Strong 매개 변수가 제대로 작동합니다.

  • delete_alldestroy_all 은(는) 더 이상 :conditions 해시를 사용하지 않고 원시 속성만 사용합니다.

  • #1908 이제 #only 또는 #without 를 사용하는 기준에서 로드된 문서에서 이러한 레코드를 저장, 업데이트 또는 삭제 하려고 할 때 오류가 발생합니다. 또한 데이터베이스 에서 검색한 필드에서 제외된 필드에 액세스 하려고 할 때 예외도 발생합니다.

  • #1344 이제 atomically 차단 에서 원자적 업데이트를 실행할 수 있으며, 이 경우 차단 이 완료될 때까지 차단 이 호출된 문서 의 모든 원자적 업데이트가 지연됩니다.

    업데이트 호출은 차단 에서 정상적으로 실행할 수 있습니다.

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

    문서 는 차단 에도 양보됩니다.

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

    원자 명령은 유연한 인터페이스를 가지고 있습니다.

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

    atomically 차단 없이 유연한 인터페이스를 활용하는 경우 개별 호출에서도 작업이 지속됩니다. 예를 예시 , 다음은 차단 이 제공되지 않으면 데이터베이스 에 3 번 충돌합니다.

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

    차단 은 한 번에 1 문서 에만 적합하므로 지금은 포함된 문서 업데이트와 루트 문서 업데이트를 혼합할 수 없습니다.

새로운 기능

  • 이제 Mongoid는 ActiveSupport::LogSubscriber를 사용하여 로그를 구독 하고 ActiveSupport::Notifications를 사용하여 작업 로그를 전송합니다. (아서 네브스) 로그 구독 의 예:

    ActiveSupport::Notifications. 구독(' 쿼리.moped') do | 이벤트| .. end

  • 이제 필드 유형에 클래스 이름뿐만 아니라 기호도 사용할 수 있습니다. 사용 가능한 매핑은 github.com/mongoid/mongoid/lob/master/lib/mongoid/fields.rb#L16 을 참조하세요.

  • #3580 이제 다음 메서드를 사용하여 필드를 기본값 으로 재설정할 수 있습니다.

    document.reset_name_to_default!

  • #3513 이제 문서에 삭제 콜백 이 false 값을 반환하는 경우 Mongoid::Errors::DocumentNotDestroyed 오류를 발생시키는 #destroy! 메서드가 있습니다.

  • #3496 클래스 수준 및 기준 수준 find_or_create_by! 을 추가했습니다.

  • #3479 이제 출력이 인라인이 아닌 경우 맵/리듀스가 기준 없음 시간 초과 옵션을 준수합니다.

  • #3478 이제 기준 객체에 #none 메서드가 있어 기준이 데이터베이스 에 충돌하지 않고 항상 문서가 0개입니다.

    Band.noneBand.none.where(name: "Tool") # 항상 문서가 없습니다.

  • #3410 Mongoid에는 이제 Rack 애플리케이션에서 미들웨어로 사용할 수 있는 쿼리 캐시 가 있습니다. (아서 네브스)

    Rails의 경우:

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

  • #3319 이제 문서 인스턴스 에서 카운터를 재설정할 수 있습니다.

    문서.reset_counters(:relation)

  • #3310 embedded_in 관계는 이제 상위 항목을 업데이트 하는 touch 옵션을 허용합니다.

  • #3302 이제 alias_attribute 을 사용한 별칭 지정이 기준의 별칭을 올바르게 처리합니다.

  • #3155 범위 필드 는 제공되는 경우 explain_end를 유지합니다. (Daniel Libanori)

  • #3146 :overwrite 필드 옵션을 추가하여 true일 때 중복을 확인하지 않습니다. (Daniel Libanori)

  • #3002 이제 Rails 콘솔을 다시 로드하면 Mongoid의 ID 맵도 지워집니다.

  • #2938 A configuration option duplicate_fields_exception has been added that when set to true will raise an exception when defining a field that will override an existing method. (아서 네브스)

  • #2924 MongoDB 2.4 beta text 이제 Atlas Search 에 Mongoid에서 제공하는 DSL이 있습니다. 다른 쿼리와 마찬가지로 텍스트 검색은 지연 평가되며 클래스 또는 기준 수준에서 사용할 수 있습니다.

    text_search 메서드를 제공하는 3타사 젬은 이제 Mongoid에서 작동하지 않으므로 구문을 변경해야 합니다. 예시:

    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 이제 관계에 여러 확장자를 제공할 수 있습니다. (Daniel Libanori)

해결된 문제

  • #3676 포함된 연관 관계를 사용하여 puck 작업을 수행합니다(아서 네브스).

  • #2898 더티(dirty) 속성 메서드가 이제 필드 별칭을 올바르게 처리하다 합니다. (Niels Ganser)

  • #3620 금지된_메서드 목록에 ActiveModel 모듈 인스턴스 메서드를 추가합니다. (아서 네브스)

  • #3610 읽기 전용 속성에 대한 원자 조작을 허용하지 않음(Frederico Araujo)

  • #3619 폐기 플래그가 지정된 문서의 유효성을 검사하지 않습니다. (Christopher J. Bottaro)

  • #3617 주기적 문서에서 인덱스 생성을 건너뛰지 마세요. (셰이커)

  • #3568 현재 현지화된 필드에서 누락된 속성 오류를 수정했습니다.

  • #3514 첫 번째/마지막 호출에서 작동하도록 쿼리 캐시 를 수정했습니다.

  • #3383/#3495 has_and_belongs_to_many 선행 로드를 수정합니다. (아서 네브스)

  • #3492 $rename 작업은 값을 몽고화해서는 안 됩니다. (Vladislav Melanitskiy)

  • #3490 현지화된 필드가 부울 false 값으로 작동하도록 허용합니다.

  • #3487 필드 정의에서 부울을 Mongoid::Boolean에 매핑합니다. (아서 네브스)

  • #3449 터치는 생성 및 업데이트 를 위해 작동해야 합니다. (그레고리 로스마이어)

  • #3347 이제 포함된 관계의 범위를 벗어나 문서를 만들면 생성된 하위 문서에 상위 문서 가 올바르게 설정됩니다.

  • #3432 DateTime의 몽고화(mongoization)가 정밀도를 잃는 문제를 수정했습니다.

  • #3397 서버 동작과 일치하도록 내장된 문서에 대한 $ne 매처를 수정했습니다.

  • #3352 'open'이라는 이름의 명명된 범위가 1-n 관계를 통해 작동하도록 허용합니다.

  • #3348 방향이 다른 동일한 키를 가진 복합 인덱스를 수정합니다. (아서 네브스)

  • #2701 exists_to 바인딩에 대한 예비 쿼리 를 수정합니다. (아서 네브스)

  • #3089 문자열을 float로 악마화 허용(Daniel Libanori)

  • #3278 카운터 캐시 는 메모리에 있는 문서 도 업데이트 해야 합니다. (아서 네브스)

  • #3242 Has_many 관계는 역 foreign_key를 사용해야 합니다. (아서 네브스)

  • #3233 계단식 하위 항목이고 관계 유효성 검사 가 켜져 있는 경우 유효성 검사 콜백을 double 호출하지 마세요.

  • #3197 루트 및 포함된 컬렉션에서 aggregates 호출이 개선되었습니다. (보이치에흐 피에쿠토프스키)

  • #3144/#3219 @_children ivar에서 이름 충돌을 수정합니다. (아서 네브스)

  • #3088 범위 필드 는 db의 속성일 수 있는 해시를 허용할 수 있습니다. (Daniel Libanori)

  • #3116 이제 관계 인스턴스 변수에 모두 _ 접두사가 붙습니다.

  • #3093 배열을 원자 단위로 푸시할 때 1 수준만 평면화합니다.

  • #3063 Document#becomes 이(가) 이제 오류 발생 시 기본 객체 를 올바르게 설정합니다. (애덤 로스 코언)

  • #3019 문서 가 지속되지 않으면 원자 조작이 더 이상 지속되지 않습니다.

  • #2903 사용하지 않는 string to_a 확장자를 제거했습니다.

3.1.7

해결된 문제

  • #3465 inverse_of가 nil로 설정하다 모호한 관계 오류를 수정했습니다.

  • #3414 집계 에 대한 백포트 건너뛰기 및 제한 옵션입니다. (보이치에흐 피에쿠토프스키)

  • #3469 RegexpError: failed to 할당 메모리: /./ on .hash_dot_syntax? (드미트리 크라스누코프)

3.1.6

해결된 문제

  • #3337 현지화된 필드 맵이 상속과 함께 복제되는지 확인합니다.

  • #3262 HABTM 외래 키 필드의 원자 배열 작업이 단일 요소를 배열로 변환하지 않도록 수정했습니다.

  • #3282 고정 .timeless 클래스 속성 대신 스레드 로컬을 사용하는 옵션입니다. 또한 모든 Docs 에서 시대를 초월한 메서드를 제거 하고 타임스탬프 Docs 에만 추가합니다. (아서 네브스)

3.1.5

해결된 문제

  • #3231 기준에서 작동하도록 프록시 문서의 진화를 허용합니다.

  • #3247 tzinfo 에 대한 종속성을 0.3.29 으로 변경합니다.

  • #3203 다형성 관계에 대한 index: true 사양을 수정했습니다.

  • #3192 Fixed aliased fields + localized fields combinations with validation. (조니 쉴즈)

  • #3173 사용자 지정 프라이머리 키의 다대다 관계와 관련된 문제를 수정했습니다. (보웬 선)

  • #3159 이제 업서트가 문서를 지속형 문서로 올바르게 플래그 지정합니다.

  • #3137 ID가 있는 행에 여러 개의 belongs_to 세트를 허용합니다.

  • 편집증이 있는 부모가 있는 #3079 임베디드 Docs 는 권한이 유지되지 않아 db에서 다시 로드할 때 _id 를 잃습니다. 값. (아서 네브스)

  • #3081 이제 기준의 method_missing 이(가) 항목을 호출하기 전에 배열 이 제공된 메서드에 응답하는지 확인하여 NoMethodError 이(가) 발생하는 경우 데이터베이스 에 충돌하지 않도록 합니다.

  • #3068 MONGOID_SPEC_PORT 이 설정하다 경우 비표준 MongoDB 포트에서 실행되는 사양이 수정되었습니다.

  • #3047 blank?empty? 가 기준에서 메서드 누락에 속하지 않는지 확인합니다.

  • 가 짧은 타임스탬프인 경우에도 cache_key에 updated_at를 포함(아서 니브스)

3.1.4

해결된 문제

  • #3044 열거 가능한 대상이 case 문의 배열과 일치하는지 확인합니다.

  • 이제 기준에 대한3034 first_or_create 이(가) 문서 가 생성된 후 호출하는 대신 생성할 차단 을 올바르게 전달합니다.

  • #3021 이니셜라이저에서 mongoid.yml 경고를 제거했으며, 이제 세션 구성 옵션에서 이 경고를 처리합니다.

  • #3018 고유성 유효성 검사기가 이제 검사에서 값을 올바르게 직렬화합니다. (제리 클라인스미스)

  • #3011 고유성 유효성 검사 를 위한 별칭 필드 지원 을 수정했습니다. (조니 쉴즈)

  • #3008 클래스 로드 게시 범위를 추가하면 하위 클래스가 범위를 제대로 상속할 수 없던 문제를 수정했습니다. (마이크 딜런)

  • 이제 #2991 Document.timeless 이(가) 스레드가 아닌 인스턴스 로 올바르게 범위를 지정합니다.

  • #2980 이제 동적 필드가 해시 및 배열의 제자리 편집을 올바르게 처리하다 합니다. (매튜 위드만)

  • #2979 pluck 이(가) 더 이상 제자리에서 컨텍스트를 수정하지 않습니다. (브라이언 고프)

  • #2970 사용 가능한 경우 관계의 이름을 올바르게 사용하고, 사용 불가능한 경우 역클래스 이름을 두 번째로 사용하도록 카운터 캐시 를 수정했습니다.

  • #2959 중첩된 속성은 이제 관계에 정의된 경우 autosave: false 을 준수합니다.

  • #2944 대소문자를 구분하지 않는 것이 true일 때 현지화된 필드에 대한 고유성 유효성 검사 를 수정했습니다. (Vladimir 주코프)

3.1.3

해결된 문제

  • 메서드를 호출한 후 저장할 때 내장된 문서를 복제하지 마세요. (아서 네브스)

  • #2961 이제 mongoid.yml 구성을 다시 로드하면 이전에 구성된 세션이 올바르게 지워집니다.

  • #2937 이제 카운트에서 true 인수를 사용하여 건너뛰기 및 제한을 고려할 수 있습니다. (아서 네브스)

  • #2921 상속이 작동하지 않는 경우 ID 맵 선택에 유형을 사용하지 마세요. (아서 네브스)

  • #2893 컬렉션 이름과 데이터베이스 이름의 메모를 제거하여 변경 시 store_in 이 포함된 Lambda가 제대로 작동하도록 합니다.

  • #2911 중첩된 속성을 처리 할 때 1-n 관계의 _destroy 속성은 이제 배열 을 전달할 때 string 또는 기호가 될 수 있습니다.

  • #2886 Rails 생성기의 네임스페이스 문제를 수정했습니다.

  • #2885 별칭이 지정된 필드의 터치를 수정했습니다. (Niels Ganser)

  • #2883 순환 관계가 혼합 관계 오류를 발생시키지 않도록 허용합니다.

  • #2867 pluck 이(가) 이제 별칭이 지정된 필드를 올바르게 처리합니다.

  • #2862 자동 저장이 더 이상 불필요한 예비 쿼리를 수행하지 않습니다. (아서 네브스)

3.1.2

해결된 문제

  • #2851 NaN 값의 BigDecimal 악마화를 수정했습니다. (nkem)

  • #2848 짧은 타임스탬프를 사용할 때 작동하도록 touch 를 수정했습니다. (아서 네브스)

  • #2840 엔드 투 엔드 no_timeout 옵션 처리를 수정했습니다.

  • #2826 이제 동적 필드가 올바르게 몽고화됩니다.

  • #2822 관계 마셜 로드가 이제 확장을 올바르게 다시 적용합니다.

3.1.1

해결된 문제

  • #2839 숫자 유효성 검사기를 제외한 유형 캐스트 값을 사용하도록 유효성 검사가 수정되었습니다. (Lailson 반데이라)

  • #2838 store_in 옵션이 이제 재정의 대신 올바르게 병합됩니다. (Clin MacKenzie)

3.1.0

새로운 기능

  • 이제 애그리게이션 프레임워크에 의존하므로 최소 MongoDB 요구 사항이 2.2 로 상향되었습니다.

  • 최소 활성 모델 및 활성 지원 종속성이 3.2 로 상향되었습니다.

  • #2809 이제 관계에서 외래 키에 ID 대신 사용할 기본 키 를 지정할 수 있습니다.

    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 $geoNear 지원 이 기준에 추가되었습니다.

    Bar.where(:likes.gt => 1000).geo_near([ 52, 13 ])
    Bar.geo_near([ 52, 13 ]).max_distance(0.5).spherical
    
  • #2799 Criteria#map 은 이제 필드 이름의 기호와 차단 을 허용하여 보다 최적화된 map 을 수행할 수 있습니다. (Gosha Arinich)

    Band.where(:likes.gt => 1000).map(:name)
    
  • #2798 애그리게이션(sum, min, max, avg)은 이제 맵/리듀스 대신 집계 프레임워크 를 사용합니다. (Gosha Arinich)

  • #2776 MongoDB 2.4.x 이제 '2dsphere', 'text' 및 'hashed'와 같은 새로운 인덱스 유형이 지원됩니다. (이라클리 자니아시빌리)

  • #2767 이제 오리진의 $maxScan 지원 이 지원됩니다. (Jonathan Hyman)

  • #2701 1-1 관계를 사용하여 예비 불필요한 데이터베이스 쿼리를 정리합니다.

  • #2693 사용자 지정 컬렉션 이름을 모델 생성기에 전달할 수 있습니다. (Subhash Bushan)

    rails g model band --collection=artists
    
  • #2688 Model.createModel.create! 는 이제 속성 해시 배열 을 사용하여 한 번에 여러 문서를 만들 수 있습니다. 속성 배열 이 제공되면 문서 배열 이 반환됩니다.

    Band.create([{ name: "Tool" }, { name: "Placebo" }])
    Band.create!([{ name: "Tool" }, { name: "Placebo" }])
    
  • #2670 필드 설정 해제는 이제 1 대신 여러 필드를 허용합니다. (아서 네브스)

    band.unset(:name, :founded)
    Band.where(name: "Placebo").unset(:members, :origin)
    
  • #2669 이제 차단 을 Criteria#new 에 전달하면 모델의 생성자에게 차단 이 올바르게 전송됩니다. (아서 네브스)

  • #2667 exists? 는 메모리에 필요한 정보가 있는 경우 더 이상 데이터베이스 에 충돌하지 않습니다.

  • #2665 Mongoid는 이제 belongs_to 관계에 대한 카운터 캐시 를 지원합니다. (아서 네브스)

    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 belongs_to 관계가 있는 내장된 문서가 이제 이를 선행 로드할 수 있습니다.

  • #2657 로거 getter 및 setter 편의 메서드가 Config 모듈에 추가되었습니다. (아서 네브스)

  • #2615 이제 인덱스가 기본값 이외의 데이터베이스 에만 존재하는 경우 인덱스 옵션에서 특정 데이터베이스 이름을 사용할 수 있습니다.

    class Band
      include Mongoid::Document
      index name: 1, { database: "another_db" }
    end
    
  • #2613 이제 Procs를 store_in 에 값으로 제공할 수 있습니다.

    class Band
      include Mongoid::Document
      store_in database: ->{ Thread.current[:database] }
    end
    
  • #2609 batch_size 옵션을 쿼리 에 전달합니다. (Martin Mauch)

  • #2555 이제 문서 ID가 해시 유형일 때 find 에 해시를 전달하는 것이 제대로 작동합니다. (Szymon Kurcab)

  • #2545 $ 위치 연산자 는 적절한 경우 중첩된 1 수준 깊이에 있는 내장된 문서의 업데이트 선택기에 사용됩니다.

  • 이제 #2539 Mongoid.models 이(가) 애플리케이션 의 모든 모델을 추적하여 인덱싱 레이크 작업 등의 모델을 보다 정확하게 결정합니다. (Ara Howard)

  • #2525 별칭이 있는 짧은 타임스탬프 필드를 가질 기능 이 추가되었습니다. 이렇게 하면 타임스탬프 필드가 c_atu_at 로 설정되고 편의상 created_atupdated_at 로도 별칭이 지정됩니다. (로드리고 사이토)

    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 이제 문서에 attribute_before_type_cast 이 있어 유효성 검사를 올바르게 처리합니다. (Gerad Suyderhoud)

  • #2443 expire_after_seconds 은(는) 이제 유효한 인덱스 옵션입니다(www.mongodb.com/ko-kr/docs/manual/core/indexes/#ttl-indexes, ( www.mongodb.com/ko-kr/docs/manual/tutorial/expire-data/).

    class Event
      include Mongoid::Document
      field :created_at, type: DateTime
      index({ created_at: 1 }, { expire_after_seconds: 3600 })
    end
    
  • #2373 이제 하위 문서 가 생성되거나 삭제될 때 touch: true 옵션이 있는 관계가 자동으로 터치됩니다.

  • Document.first_or_create!Criteria#first_or_create! 을(를) 추가했습니다. 생성이 유효성 검사 에 실패할 경우 유효성 검사 오류가 발생합니다.

    Band.where(name: "Depeche Mode").first_or_create!
    Band.where(name: "Tool").first_or_create!(active: true)
    
  • Document.first_or_initializeCriteria#first_or_initialize 을(를) 추가했습니다. 이는 first_or_create 와 동일하지만 문서가 발견되지 않으면 새(비영구) 문서 를 초기화합니다.

    Band.where(name: "Depeche Mode").first_or_initialize
    Band.where(name: "Tool").first_or_initialize(active: true)
    
  • Active Record와 유사한 Model.pluckCriteria#pluck 가 추가되었으며, 이는 제공된 필드 에 대한 값 배열 을 반환합니다. (Jason 리)

    Band.where(name: "Depeche Mode").pluck(:_id)
    Band.where(name: "Tool").pluck(:likes)
    
  • #2324 임베딩 많은 관계가 이제 delete_if 을 올바르게 처리하다 합니다.

  • #2317 Document.first_or_createCriteria#first_or_create 을(를) 추가했습니다. 이렇게 하면 일치하는 첫 번째 문서 가 반환되거나 문서가 존재하지 않는 경우 추가 속성을 사용하여 문서가 생성됩니다. (incorvia)

    Band.where(name: "Depeche Mode").first_or_create
    Band.where(name: "Tool").first_or_create(active: true)
    
  • #2292 Model.each_with_index 을(를) 추가했습니다.

  • 이제 해시에서 직접 설정을 인스턴스화하려는 사람들을 위해 #2285 Config.load_configuration 이(가) 공개됩니다.

  • #2275 기본값 데이터베이스 의 시스템 컬렉션을 제외한 모든 컬렉션을 삭제하는 레이크 작업 db:mongoid:purge 이 추가되었습니다.

  • 데이터베이스 에서 문서가 반환될 때 #2257 after_find 콜백이 추가되었습니다.

    class Band
      include Mongoid::Document
    
      after_find do |doc|
        # Some logic here.
      end
    end
    
  • #2223 Model.for_js를 통한 JavaScript 삽입으로부터 보호되는 매개 변수가 있는 JavaScript 로 문서를 찾을 수 있도록 허용합니다.

    Band.for_js("this.name = param", param: "Tool")
    Band.where(:likes.gt => 1000).for_js("this.likes < this.follows")
    
  • #2197 포트 없이 세션 구성을 제공할 때 Mongoid는 이제 이를 기본값 으로 27017 으로 설정합니다.

  • #2180 1-n 및 nn 관계가 이제 콜백 추가/ 제거 전/후를 지원 합니다. (로드리고 사이토)

    class Band
      include Mongoid::Document
    
      embeds_many :albums, after_add: :notify_labels
      has_many :followers, before_remove: ->(band, follower){ notify_unfollow(follower) }
    end
    
  • #2157 Criteria#updateCriteria#update_all 는 이제 필드 가 정의된 경우 필드 유형에 따라 값을 직렬화합니다.

  • #2022 이제 사용자 지정 콜백이 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 외래 키가 빈 배열 인 경우 다대다 관계는 데이터베이스 를 건들지 않습니다.

  • #1564 이제 다대다 외래 키는 관계에 액세스한 경우에만 기본값 이 느리게 설정하다 됩니다. 이렇게 하면 관계가 건드리지 않은 경우 빈 배열이 저장되는 것을 방지할 수 있습니다.

해결된 문제

  • #2730 컨텍스트에서 정렬을 호출하면 컨텍스트의 기준이 올바르게 업데이트됩니다. (아서 네브스)

  • 이제 #2719 distinct 을(를) 클래스 수준에서 사용할 수 있습니다.

    Band.distinct(:name)
    
  • #2714 새 세션에 다른 데이터베이스 가 있을 때 세션을 재정의하면 이제 런타임에도 데이터베이스 가 올바르게 전환됩니다.

  • #2697 동일한 클래스에서 상속된 여러 모델을 포함할 때 선행 로딩이 수정되었습니다. (Kirill Lazarev)

  • #2664 이제 여러 필드가 제공될 때 내장된 문서의 메모리 내 정렬이 제대로 작동합니다. (Neer 프리드만)

3.0.24

해결된 문제

  • 새 문서에 대한 #2879 remove_attribute 이(가) 더 이상 불필요한 $unset 작업을 생성하지 않습니다.

3.0.23

해결된 문제

  • #2851 NaN 값의 BigDecimal 악마화를 수정했습니다. (nkem)

  • #2841 상위 업데이트 도중에 임베드 다수에 delete_all 또는 destroy_all 를 호출하면 이제 삭제가 제대로 실행됩니다. (아서 네브스)

  • #2835 고유성 유효성 검사기에서 지속성 옵션이 지워지는 문제를 수정했습니다.

  • #2826 이제 동적 필드가 올바르게 몽고화됩니다.

  • #2822 관계 마셜 로드가 이제 확장을 올바르게 다시 적용합니다.

  • #2821 자동 저장된 관계는 상속 클래스에서 속여야 합니다.

3.0.22

해결된 문제

  • #2812 기본 문서 가 파괴되고 외래 키가 아직 지연 평가되지 않은 경우 다대다 관계에 대한 기준을 수정했습니다.

  • #2796 삭제 로 할당할 때 has_many 관계에 변경 사항을 계단식으로 적용하지 마세요.

  • #2795 시간 변환의 정밀도를 수정합니다. (Tom de Bruijn)

  • #2794 유효성 검사 를 위해 관계를 읽을 때 자동 빌드를 하지 않습니다.

  • #2790 becomes 는 이제 내장된 문서가 대량 할당으로 보호된 경우에도 복사합니다.

  • #2787 becomes 이(가) ID 맵의 문서 를 대체하도록 허용합니다.

  • #2786 삭제 시 회귀된 계단식 콜백이 실행되지 않던 문제를 수정했습니다.

  • #2784 고유성 유효성 검사 가 하위 클래스에 올바르게 추가되는 문제를 수정했습니다. (아키마 타케시)

3.0.21

해결된 문제

  • #2781 / * #2777 - Rails 환경에만 존재하던 DateTime 의 직렬화 관련 문제가 수정되었습니다.

3.0.20

해결된 문제

  • #2774 고유성, 존재 여부 및 관련성에 대한 유효성 검사 매크로를 인스턴스 수준에서도 사용할 수 있는지 확인합니다.

  • #2772 이제 문서 를 복제할 때 현지화된 필드가 올바르게 처리됩니다.

  • #2758 Mongoid.create_indexes 은(는) 클래스를 상수화할 수 없을 때 실패하지 않습니다. (아서 네브스)

  • #2743 수정본을 로드할 때 지속성 옵션이 더 이상 지워지지 않습니다. (아서 네브스)

  • #2741 MRI 및 JRuby에서 시간 mongoization usec 반올림 오류를 수정합니다.

  • #2740 점 표기법 과 함께 read_attribute 를 사용할 때 해시 필드에 정수 키를 지원합니다.

  • #2739 정수 역직렬화가 정수로 올바르게 캐스팅되는지 확인합니다.

  • #2733 inverse_of: nil 과의 다대다 관계는 문서 가 이미 유지된 경우 << 또는 push 에서 역관계를 유지하지 않습니다.

  • #2705 종속 콜백 목록에 하위 항목을 추가할 수 있는 경우와 관련된 로직을 수정했습니다.

3.0.19

해결된 문제

  • 릴리스되어 #2703 의 변경 사항을 되돌립니다.

3.0.18

해결된 문제

  • #2707 연결된 기준 또는 범위가 있는 관계에서 find_or_create_by 또는 find_by_initialize_by 를 호출하면 새 문서나 찾은 문서 에서 관계가 제대로 그대로 유지됩니다.

  • #2699 이제 필드 를 재설정하면 변경된 속성 목록에서 이름이 제거됩니다. (Subhash Bushan)

  • #2683 이제 기준에서 원자 조작을 실행할 때 별칭이 지정된 필드가 지원됩니다. (아서 네브스)

  • #2678 일치하는 문서가 없는 상태에서 Criteria#sum 를 호출하면 nil 0 가 반환됩니다.

  • #2671 매처가 이제 기호 키를 올바르게 처리하다 합니다. (Jonathan Hyman)

3.0.17

해결된 문제

  • #2686 깨진 Moped 종속성 수정 - 이제 Moped는 버전 1.2.0 이상이어야 합니다.

3.0.16

해결된 문제

  • #2661 문서에 대한 인스턴스 수준 model_name 을 구현합니다.

  • #2651 Criteria#type 이 선택기의 기호 및 string 키 모두에서 제대로 작동하는지 확인합니다.

  • #2647 편집증 문서의 deleted?destroyed? 가 동일한 값을 반환하는지 확인합니다.

  • #2646 차단 에 양보하기 전에 언로드된 문서를 열거 가능한 대상의 메모리에 설정합니다.

  • #2645 카운트를 요청할 때 캐싱을 고려합니다. (아서 노게이라 네베스)

  • #2642 내장된 문서에 빈 배열을 배치 푸시하지 않습니다. (Laszlo Bacsi)

  • #2639 새 레코드와 관계를 구축할 때 불필요한 예비 쿼리를 피합니다.

  • #2638 기준이 즉시 로드인 경우 first 또는 last 를 호출한 다음 전체 결과를 올바르게 반복하면 전체 요청 을 즉시 로드합니다.

  • #2618 고유성 유효성 검사는 이제 기본값 항상 string 일관성 을 사용합니다.

  • #2564 관계 게터가 재정의되고 해당 메서드에서 세터를 호출하는 경우의 무한 재귀를 수정했습니다.

  • #2554 embeds_manyunscoped 에 폐기 플래그가 지정된 문서가 포함되어 있지 않은지 확인합니다.

3.0.15

해결된 문제

  • #2630 메타데이터 가 존재하지만 캐스케이드가 정의되지 않은 경우의 캐스케이드를 수정합니다.

  • #2625 프록시 및 기준 객체의 Marshal.dumpMarshal.load 를 수정합니다.

  • #2619 사용자 지정 모델을 관찰할 때 관찰자에 대해 observed_classes 가 반환하는 클래스를 수정했습니다.

  • #2612 DocumentNotFound 오류는 이제 오류 인스턴스 의 클래스를 노출합니다.

  • #2610 정렬 옵션이 있는 last first 를 호출하면 정렬이 재설정됩니다.

  • #2604 pull 및 push에 충돌하는 업데이트가 있는지 확인합니다. (Lucas Souza)

  • #2600 다중 매개변수 속성을 사용할 때 속성에 적합한 클래스 유형을 인스턴스화합니다. (xxswingxx)

  • #2598 내장된 Docs 가 있는 현지화된 필드의 정렬이 수정되었습니다.

  • #2588 유효하지 않은 Ruby 메서드가 될 수 있는 동적 속성에 대한 메서드 정의를 차단합니다. (맷 샌포드)

  • #2587 관계 언로드 기준을 재설정할 때 belongs_to 프록시와의 메서드 충돌을 수정합니다.

  • #2585 세션 구성 옵션이 Moped에 기호로 전달되도록 합니다.

  • #2584 출력이 inline 로 설정하다 경우 맵/리듀스가 세컨더리에서 작동하도록 허용합니다.

  • #2582 nil 세션 재정의가 이름이 nil 인 세션에 액세스 할 수 없도록 합니다.

  • #2581 문서를 다시 로드할 때 Strong 일관성 을 사용합니다. (Mark Kremer)

3.0.14

해결된 문제

  • #2575 float가 usec를 처리하다 할 만큼 충분히 정확하지 않으므로 월말 시간이 반올림되지 않도록 합니다. (스티브 발레이티스)

  • #2573 검사 메시지에 i18n 을 사용하지 않습니다.

  • #2571 국가 및 언어 설정에서 빈 오류 메시지를 제거합니다. (Jordan Elver)

  • #2568 범위도 제공될 때 현지화된 필드에 대한 고유성 유효성 검사 를 수정합니다.

  • #2552 내장된 문서가 루트 선택기에서 경로를 가져오려고 할 때 InvalidPath 오류가 발생하는지 확인합니다.

3.0.13

해결된 문제

  • #2548 gemset에 Unicorn을 사용하여 새 앱 으로 구성 파일 을 생성할 때 오류가 수정되었습니다.

3.0.12

해결된 문제

  • #2542 store_as 을(를) 사용하는 내장된 문서가 기준에서 적절한 별칭을 지정할 수 있도록 허용합니다.

  • #2541 Document#becomes 통해 문서 를 업캐스팅/다운캐스팅할 때 유형 변경이 올바른지 확인합니다.

  • #2529 둘 다 procs와 함께 기본값이 있는 상위 클래스의 필드를 재정의하는 하위 클래스의 필드가 이제 하위 클래스의 기본값 을 올바르게 재정의합니다.

  • #2528 별칭이 지정된 필드는 서브클래싱할 때 속여야 합니다.

  • #2527 빈 배열 로 설정할 때 has_many 에서 Docs 를 제거하면 다중 업데이트 가 수행되는지 확인합니다.

3.0.11

해결된 문제

  • #2522 클래스가 아닌 기준을 반환하도록 Criteria#with 를 수정했습니다.

  • #2518 Passenger를 사용할 때 ID 맵에 대한 작업 단위 호출을 수정합니다.

  • #2512 중첩된 속성 삭제가 여러 수준의 깊이일 때 3.0.10 에 도입된 지연된 삭제와 함께 작동하는지 확인합니다.

  • #2509 반환된 값이 빈 해시인 경우 예비 시간을 ID 맵에 적중하지 마세요. (Douwe Maan)

3.0.10

해결된 문제

  • #2507 선행 로드에 Docs 가 있는 부모와 없는 부모가 혼합되어 있을 때 예비 DB 히트가 없도록 합니다. (Douwe Maan)

  • #2505 기준의 updateupdate_all 가 별칭이 지정된 필드를 올바르게 처리하다 하는지 확인합니다. (드미트리 크라스누코프)

  • #2504 Model#becomes 이(가) 동일한 ID를 올바르게 유지합니다.

  • #2498 이제 기준이 method_missing 을(를) 통해 제공된 차단을 올바르게 전달합니다.

  • #2496 이전에 ID 없이 저장되었던 내장된 문서가 이제 제대로 업데이트 되고 Mongoid 내에서 할당된 ID를 받습니다.

  • #2494 모든 명시적 원자 조작은 이제 별칭이 지정된 필드를 올바르게 존중합니다.

  • #2493 model_name 이 재정의된 경우 다형성 유형을 설정할 때 Class#model_name Class#name 를 사용합니다.

  • #2491 캐스케이딩 가능한 하위 항목에서 불필요한 병합 호출을 제거했습니다.

  • #2485 이제 인덱스 제거 시 일관성 Strong Consistency 가 사용됩니다.

  • #2483 이제 버전 관리에서 현지화된 필드를 처리합니다. (로렌스 커티스)

  • #2482 DocumentNotFound 오류에 매개변수를 저장합니다.

  • #2481 이제 맵/리듀스 애그리게이션이 100 그룹에서 mongo 의 리듀스 작업 일괄 처리를 올바르게 처리하다 하며 상태 는 카운트에서 전달됩니다.

  • #2476 embeddeds_many 관계에서 범위 를 벗어나는 건너뛰기 및 제한을 정상적으로 처리합니다.

  • #2474 하위 관계가 아직 로드되지 않았을 때 1-1 관계를 올바르게 분리합니다. (Kostyantyn Stepanyuk)

  • 포함된 편집증 문서의 #2451 relation.deleted 이(가) 이제 다시 제대로 작동합니다.

  • #2472 실제로 업데이트할 것이 없을 때 임베딩된 관계의 update_all 가 제대로 작동하는지 확인합니다.

  • #2469 관계에서 무효화된 문서를 이제 인메모리 인스턴스 에서 동일한 문서로 다시 추가할 수 있습니다.

  • #2454 Model#as_document 은(는) 제거되는 관계에 대한 변경 사항을 올바르게 허용합니다. (제임스 알몬드)

  • #2445 Mongoid 미들웨어는 이제 일반 응답과 스트리밍 응답을 모두 제대로 지원하며 둘 다에 대한 ID 맵을 올바르게 지웁니다.

  • #2367 중첩된 속성을 통해 삭제되어야 하는 내장된 문서는 상위 유효성 검사 가 실패할 경우 더 이상 관계에서 즉시 제거되지 않습니다. 대신 폐기 플래그가 지정된 다음 부모가 유효성 검사 를 통과하고 지속되면 제거됩니다.

이는 동작 변경이지만 API 가 변경되지 않고 이전 동작이 올바르지 않고 AR과 일치하지 않았기 때문에 점 출시하다 로 Go 수 있었습니다.

3.0.9

해결된 문제

  • #2463 새 리포지토리에서 손상된 rails g mongoid:config 를 수정했습니다.

  • #2456 이제 문서 가 다시 상속되면 하위 항목 캐시 가 재설정됩니다. (Kostyantyn Stepanyuk)

  • #2453 Model#write_attribute 이(가) 이제 별칭이 지정된 필드에서 제대로 작동합니다. (Campbell Allen)

  • #2444 예비 더티 메서드 생성 호출을 제거했습니다. (Kostyantyn Stepanyuk)

  • #2440/#2435 중첩된 속성이나 내장된 문서를 통해 설정할 때 대량 할당 옵션을 하위 항목으로 전달합니다.

  • #2439 반환된 필드의 스레드 선택에서 메모리 누수가 수정되었습니다. (팀 올슨)

  • mongoid/moped#82 별칭이 지정된 필드가 이제 Criteria#distinct 에서 작동합니다.

  • #2423 기준 해제를 사용할 때 올바른 $ 설정하다 를 수행하도록 내장된 문서의 update_all 를 수정했습니다.

  • #2414 인덱스 정의는 이제 별칭이 지정된 필드를 존중합니다.

  • #2413 이제 블록이 제공되지 않을 때 열거 가능한 대상이 열거자를 올바르게 반환합니다. (Andrew Smith)

  • #2411 정수와 부동 소수점을 몽고화할 때 BigDecimal 필드가 문자열로 올바르게 저장됩니다.

  • #2409 프로그래밍 방식으로 구성된 경우 mongoid.yml 누락에 대해 경고하지 않습니다.

  • #2403 문서가 없는 임베딩이 많은 update_all 에 대해 false를 반환합니다.

  • #2401 기준을 해시와 병합하는 기능 을 다시 가져옵니다.

  • #2399 has_many Model#object_ids= 에서 빈 ID 값을 거부합니다. (티아고 라파엘 고디뉴)

  • #2393 다형성 관계를 사용할 때는 inverse_of 이 존중되는지 확인합니다.

  • #2388 맵/리듀스가 명령 실행에서 orderby sort 을(를) 올바르게 사용합니다. (Alex Tsibulya)

  • #2386 인덱스에 지리적 헤이스택 및 비트 매개변수를 허용합니다. (브래들리 리스)

  • #2380 Model#becomes 이(가) 이제 더티 속성을 올바르게 복사합니다.

  • #2331 after_create 콜백 에서 예비 저장이 호출될 때 하위 문서를 double 푸시하지 않습니다.

3.0.8 (Yanked)

3.0.6

해결된 문제

  • #2375 이제 고유성 유효성 검사 범위 지정이 별칭이 지정된 필드에서 작동합니다.

  • #2372 실행하기 전에 모든 원자 조작이 값을 몽고화하는지 확인합니다.

  • #2370 이제 편집증 문서가 dependent: :restrict 을 사용할 때 제대로 삭제되지 않고 예외가 발생합니다.

  • #2365 embeddeds_one을 동일한 문서 로 바꾸려고 할 때는 아무 것도 하지 마세요.

  • #2362 필요하지 않은 경우 필드 값의 역수를 데이터베이스 에 저장 하지 않습니다. (동일한 클래스에 정의된 다형성 상위 항목이 두 개 이하인 경우).

  • #2360 문서를 복제할 때는 대량 할당 보호 규칙을 무시해야 합니다.

  • #2356 only 를 통해 쿼리에서 반환되는 필드를 제한하는 경우 제한 범위가 모델로 지정되는지 확인합니다.

  • #2353 update_attribute 가 별칭이 지정된 필드를 올바르게 처리하다 할 수 있도록 허용합니다.

  • #2348 string 이 유효하지 않은 경우 문자열을 시간으로 변환하면 인수 오류가 발생합니다. (Campbell Allen)

  • #2346 문서 가 아닌 프록시를 전달할 때 belongs_to 관계가 진화할 수 있는지 확인합니다.

  • #2334 때때로 필드가 존재하지 않는 경우 집계 맵/리듀스를 수정했습니다. (제임스 맥키니)

  • #2330 제한이 적용된 상태에서 문서를 반복할 때 기준에서 #size 및 #Length 의 불일치가 수정되었습니다.

  • #2328 정의된 경우 모든 관계 기준에 순서가 적용되는지 확인합니다.

  • #2327 문서 에서 콜백을 실행할 수 없는 경우 기본 문서 에서 콜백을 실행하지 않습니다.

  • #2318 부동 소수점 필드 에 숫자를 설정하면 제공된 숫자가 정수인 경우에도 실제로 부동 소수점으로 설정되는지 확인합니다.

3.0.5

해결된 문제

  • #2313 nil TimeWithZone 필드의 역직렬화를 수정했습니다. (나가치카)

  • #2311 Document#changes 은(는) 액세스만 가능하고 실제로 변경되지 않은 배열 및 해시 필드에 대해 더 이상 nil 값을 반환하지 않습니다. 2.4.x에서 회귀.

  • #2310 메모리에 다대다 중복을 연속적으로 설정해도 더 이상 역외래 키가 지워지지 않습니다.

  • #2309 초기 설정하다 보다 더 많은 해시를 사용하여 embeddeds_one 관계를 설정하다 수 있도록 허용합니다.

  • #2308 has_manyhas_and_belongs_to_many 관계에서 #find 를 통해 검색한 문서가 메모리에 유지되는지 확인합니다.

  • #2304 이제 기본 범위가 AR의 예상대로 둘 이상이 정의된 경우 덮어쓰는 대신 제대로 병합됩니다. (키릴 막시모프)

  • #2300 다시 로드하면 ID 맵의 문서 가 새로 고쳐집니다.

  • #2298 null 설정하다 을 가져오는 다대다 관계로부터 보호합니다. (Jonathan Hyman)

  • #2291 문서 의 다른 변경 사항이 무엇이든 터치 작업을 수정하여 타임스탬프와 선택적 필드 만 업데이트 합니다.

  • #1091 값이 false 인 경우 현재 상태 유효성 검사 통과를 허용합니다.

3.0.4

해결된 문제

  • #2280 연관 관계의 양쪽에 순서 지정 기본값 범위가 있는 경우 다대다 관계의 동기화를 수정합니다.

  • 이제 #2278 Criteria#update 은 첫 번째 일치하는 문서 만 올바르게 업데이트하며, 여기서 Criteria#update_all 는 일치하는 모든 문서를 업데이트 합니다. (플래그 없음 vs 멀티).

  • #2274 모델을 로드할 때 오류가 발생하면 경고하지만 계속 처리 합니다.

  • #2272 실제 nil 값의 기본값 범위를 제거할 때 선택기 또는 옵션을 지우지 않습니다. 키가 존재하는지 확인해야 합니다.

  • #2266 복원된 편집증 문서가 더 이상 폐기된 것으로 표시되지 않습니다. (마리오 어허)

  • #2263 다대다 관계에서 객체 ID가 아닌 외래 키의 캐스팅이 유효성 검사 시점이 아닌 초기 설정하다 에서 발생하도록 합니다.

3.0.3

해결된 문제

  • #2259 상위 또는 형제 유형을 가진 동일한 컬렉션 에 있는 다른 문서 의 ID를 통해 하위 클래스화된 문서를 ID 맵에서 가져올 수 없도록 합니다.

  • #2254 $inc 연산은 더 이상 모든 값을 float로 변환하지 않습니다.

  • #2252 콜백이 종료되기 전에 자동 저장을 실행하지 않습니다.

  • #2248 기준 및 관계에서 exists? 의 성능이 개선되었습니다. (Jonathan Hyman)

3.0.2

해결된 문제

  • #2244 중첩된 속성에서 ID 대량 할당 경고를 제거합니다.

  • #2242 첫 번째 또는 마지막으로 호출할 때 모든 문서를 로드하지 않도록 긴급 로딩을 수정합니다.

  • #2241 이제 맵/리듀스 작업은 대부분의 경우 컬렉션에 쓰기 (write) 수 있는 가능성이 있으므로 일관성 Strong Consistency를 사용합니다.

  • #2238 #only 를 사용하고 업데이트할 때 nil -> [] 변경을 방지하기 위해 nn개의 외래 키 필드가 크기 조정 가능으로 플래그 지정되었는지 확인합니다.

  • #2236 유효성 검사 예외에 있는 문서 의 인스턴스 를 document 또는 record 를 통해 액세스할 수 있도록 유지합니다.

  • #2234 사용자 지정 옵션으로 문서 가 유지될 때 유효성 검사가 사용자 지정 옵션에서 제대로 작동하는지 확인하고, 유효성 검사가 통과되면 유효성 검사 를 취소하지 마세요.

  • #2224 Model#inc 은(는) 이제 BigDecimal 값을 허용합니다.

  • #2216 연속으로 여러 번 설정할 때 하나의 관계 임베드에 메타데이터 할당이 수정되었습니다.

  • #2212 모든 상황에서 validate: false 을(를) 사용하여 저장한 후 오류가 지워졌는지 확인합니다.

  • #2207 ID를 즉시 로드하는 경우 필수 필드를 가져오지 못하는 여러 번의 반복 문제를 방지하려면 쿼리 를 속여야 합니다.

  • #2204 유효하지 않은(관계가 아닌 또는 1 수준을 초과하는) 인수를 Criteria.includes 에 전달할 때 InvalidIncludes 오류가 발생합니다.

  • #2203 맵/리듀스가 이제 Model#with 와 함께 제대로 작동합니다.

    Band.
      with(session: "secondary").
      where(:likes.gt => 100).
      map_reduce(map, reduce).
      out(inline: 1)
    
  • #2199 이제 현재 상태 유효성 검사 를 자동으로 추가할 때 자동 저장 false가 존중됩니다. (존 니시나가)

3.0.1

해결된 문제

  • #2191 오류 메시지 생성 메서드에 대한 적절한 가시성(비공개)을 보장합니다.

  • #2187 중첩된 문서의 모든 수준이 json으로 직렬화되었는지 확인합니다.

  • #2184 Ruby 핵심 커널 메서드와 충돌하는 관계의 이름이 존재 검사를 통과하도록 허용합니다.

  • #2181 다른 정렬 기준이 제공되지 않은 경우 .first 기준이 ID 오름차순으로 정렬되도록 합니다.

3.0.0

새로운 기능

  • #2151 지속성 전에 메타데이터 를 요청할 때 메타데이터 데이터가 없으면 Mongoid에서 Mongoid::Errors::NoMetadata 오류가 발생합니다.

  • 이제 #2147 Model#becomes 가 내장된 문서를 복사합니다.

  • 새로운 콜백 이 도입되었습니다: upsert document.upsert 호출할 때 실행되는, Mongoid는 문서가 새 문서로 처리되어야 하는지 아니면 영구 문서 로 처리되어야 하는지 알 수 없기 때문입니다. 이와 함께 모델 콜백이 제공됩니다.

    before_upsert
    after_upsert
    around_upsert
    
  • #2080/#2087 Mongoid가 유지하는 데이터베이스 또는 세션은 이제 Model#with 가 실행 가능한 옵션이 아닌 경우 글로벌 수준에서 재정의할 수 있습니다.

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

    이 옵션은 전역 옵션이며 현재 스레드의 모든 모델에 대해 재정의됩니다. 재정의가 더 이상 발생하지 않도록 하려면 이 값을 다시 nil로 설정하다 하는 것을 잊지 않는 것은 개발자의 책임입니다.

    Mongoid.override_database(nil)
    Mongoid.override_session(nil)
    
  • #1989 기준 count, sizelength 는 이제 데이터베이스 액세스 와 관련하여 Active Record 처럼 작동합니다.

    Criteria#count 는 항상 데이터베이스 를 적중하여 개수를 얻습니다.

    Criteria#length 기준이 로드되지 않은 경우 Criteria#size 가 데이터베이스 에 한 번 충돌하고 후속 호출은 캐시된 값을 반환합니다.

    기준이 반복되거나 로드된 경우 lengthsize 는 데이터베이스에 충돌하지 않습니다.

  • #1976 기본 쿼리 가 0의 결과를 반환하는 경우 선행 로드가 더 이상 쿼리를 생성하지 않습니다.

  • Model.find_by 이제 차단 을 허용하고 nil이 아닌 경우 발견된 문서 에 양보합니다.

    Band.find_by(name: "Depeche Mode") do |band|
      band.likes = 100
    end
    
  • #1958/#1798 이제 문서 및 belongs_to 관계가 터치를 지원 합니다.

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

    문서의 updated_at 타임스탬프를 현재 시간으로 업데이트합니다. 이렇게 하면 터치 가능한 모든 관계의 타임스탬프도 업데이트 됩니다.

    Band.first.touch
    

    udpated_at와 함께 특정 시간 필드 를 업데이트합니다.

    Band.first.touch(:founded)
    

    이렇게 하면 유효성 검사나 콜백이 실행되지 않습니다.

  • Mongoid는 이제 MongoDB의 $findAndModify 명령을 지원합니다.

    Band.find_and_modify("$inc" => { likes: 1 })
    
    Band.desc(:name).only(:name).find_and_modify(
      { "$inc" => { likes: 1 }}, new: true
    )
    
  • #1906 Mongoid는 찾을 여러 ID를 제공할 때 ID 맵에서 문서를 조회 합니다. (한스 핫셀버그)

  • #1903 포함된 컬렉션 의 where 절에 JavaScript 표현식 을 제공하면 Mongoid에서 오류가 발생합니다. (Sebastien Azami)

  • 이제 애그리게이션은 Mongoid API 와 해당되는 경우 열거 가능한 대응 항목을 모두 준수합니다.

    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
    

    필드 이름을 제공하고 차단 을 제공하지 않으면 단일 숫자 값이 반환되지만 차단 을 제공하면 최소/최대 값이 있는 문서 가 반환됩니다. 이는 Ruby의 Enumerable API 가 차단 을 제공할 때 일치하는 요소가 반환되도록 지시하기 때문입니다.

    차단 을 제공하면 모든 문서가 메모리에 로드됩니다. 기호를 제공하면 서버 의 맵/리듀스를 통해 실행이 처리됩니다.

  • 이제 필드 에 대한 한 번의 호출로 모든 것을 가져올 수 있는 주방 싱크 집계 메서드가 제공됩니다.

    Band.aggregates(:likes)
    # =>
    #   {
    #     "count" => 2.0,
    #     "max" => 1000.0,
    #     "min" => 500.0,
    #     "sum" => 1500.0,
    #     "avg" => 750.0
    #   }
    
  • 이제 편의상 맵/리듀스 작업에 기준 API 에서 벗어난 DSL이 제공됩니다.

    Band.where(name: "Tool").map_reduce(map, reduce).out(inline: 1)
    Band.map_reduce(map, reduce).out(replace: "coll-name")
    Band.map_reduce(map, reduce).out(inline: 1).finalize(finalize)
    
  • Mongoid는 이제 Criteria API(기준 API)에 오리진(Origin)을 사용합니다. 문서는 오리진 리포지토리 및 API Docs 를 참조하세요.

  • #1861 Mongoid는 이제 관계의 역관계를 결정할 수 없고 잠재적인 후보가 여러 개인 경우 AmbiguousRelationship 오류를 발생시킵니다. (한스 핫셀버그)

  • 이제 기준에서 직접 설명을 수행할 수 있습니다.

    Band.where(name: "Depeche Mode").explain
    
  • #1856 푸시 온 일대다 관계를 이제 체인으로 연결할 수 있습니다.

    band.albums.push(undertow).push(aenima)
    
  • #1842 MultiParameterAttributes는 이제 별칭이 지정된 필드를 지원합니다. (Anton Orel)

  • #1833 상위 항목이 정의되지 않은 상태에서 내장된 문서 를 저장하려고 하면 Mongoid가 Mongoid::Errors::NoParent 예외를 발생시킵니다.

  • 필드 이름을 가져오는 ORM에 구애받지 않는 방법 추가

    class Band
      include Mongoid::Document
      field :name, type: String
    end
    
    Band.attribute_names
    
  • 이제 관계의 #1831 find_or_create_by 가 대량 할당 및 유형 옵션을 사용합니다. (오노 타츠야)

    class Band
      include Mongoid::Document
      embeds_many :albums
    end
    
    band.albums.find_or_create_by({ name: "101" }, LP)
    
  • #1818 embeds_many 관계가 저장되는 키를 선택할 수 있는 역량 을 추가합니다. (Cyril Mougel)

    class User
      include Mongoid::Document
      field :name, type: String
      embeds_many :prefs, class_name: "Preference", store_as: 'my_preferences'
    end
    
    user.prefs.build(value: "ok")
    user.save
    # document saves in MongoDB as:
    # { "name" => "foo", "my_preferences" => [{ "value" => "ok" }]}
    
  • #1806 Model.find_or_create_byModel.find_or_initialize_by 는 이제 문서를 exists_to 관계의 매개 변수로 사용할 수 있습니다.

    person = Person.first
    Game.find_or_create_by(person: person)
    
  • #1774 관계에 이제 종속 관계에 대한 :restrict 옵션이 추가되어 아직 하위 항목이 있는 상위 항목을 삭제 하려고 할 때 오류가 발생합니다. (한스 핫셀버그)

    class Band
      include Mongoid::Document
      has_many :albums, dependent: :restrict
    end
    
    band = Band.first
    band.albums << Albums.first
    band.delete # Raises DeleteRestriction error.
    
  • #1764 필드 가 기본값 과 다른지 확인하는 메서드를 추가합니다.

    class Band
      include Mongoid::Document
      field :name, type: String, default: "New"
    end
    
    band = Band.first
    band.name_changed_from_default?
    
  • #1759 잘못된 필드 오류 메시지가 업데이트되어 원래 메서드의 소스와 위치 가 표시됩니다. 새 메시지는 다음과 같습니다.

    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 이제 하위 관계를 설정하다 수 있는 has_many 관계에 대한 setter 및 getter가 제공됩니다. (Piotr Jakubowski)

    class Album
      include Mongoid::Document
      has_many :engineers
    end
    
    class Engineer
      include Mongoid::Document
      belongs_to :album
    end
    
    album = Album.first
    engineer = Engineer.first
    album.engineer_ids = [ engineer.id ]
    album.engineer_ids # Returns the ids of the engineers.
    
  • #1741 이제 Mongoid는 Mongoid가 인덱스 정의를 관리하며 제거가 자동화되어야 하는 환경에서 인덱스를 강제로 제거 하는 레이크 작업 을 제공합니다. (한스 핫셀버그)

    rake db:force_remove_indexes
    rake db:mongoid:force_remove_indexes
    
  • #1726 Mongoid.load! 은(는) 이제 로드할 환경에 대한 선택적 두 번째 인수를 허용합니다. 이는 제공된 경우 설정하다 모든 환경 변수보다 우선합니다.

    Mongoid.load!("/path/to/mongoid.yml", :development)
    
  • #1724 Mongoid는 이제 정규식 필드를 지원합니다.

    class Rule
      include Mongoid::Document
      field :pattern, type: Regexp, default: /[^abc]/
    end
    
  • #1714/#1706 인덱스 생성 시 더 나은 로깅이 추가되었습니다. (한스 핫셀버그)

    루트 document model 에 인덱스 가 있는 경우:

    Creating indexes on: Model for: name, dob.
    

    내장된 모델에 인덱스 가 정의된 경우:

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

    인덱스 가 정의되지 않으면 아무것도 기록되지 않으며, 잘못된 인덱스 가 정의되면 오류가 발생합니다.

  • #1710 Mongoid가 ID 및 유형 속성을 자동으로 보호하지 않도록 하려면 구성 옵션을 설정하다 하여 이 기능을 끄면 됩니다.

    Mongoid.protect_sensitive_fields = false
    
  • 이제 관계에 속한 #1685 에 build_ 및 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 Mongoid가 결정할 수 없기 때문에 적절한 inverse_of 정의가 없는 관계에 자식을 설정하다 하려고 할 때 Mongoid::Errors::InverseNotFound 을 발생시킵니다.

    class Car
      include Mongoid::Document
      embeds_one :engine, class_name: "Motor"
    end
    
    class Motor
      include Mongoid::Document
      embedded_in :machine, class_name: "Car"
    end
    
    car = Car.new
    car.engine = Motor.new # raises an InverseNotFound error.
    
  • #1680 다형성 관계는 이제 조회 쿼리에서 *_type 키를 사용합니다.

    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 이제 동일한 상위 클래스에 대한 상위 분리 가능한 다형성 관계를 사용할 수 있습니다. 이는 하위 항목이 어떤 관계에 속하는지 확인하기 위해 상위 측에서 설정하다 한 경우에만 작동합니다. (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 to_criteria 에 응답하는 객체를 이제 기존 기준 객체에 병합할 수 있습니다.

    class Filter
      def to_criteria
        # return a Criteria object.
      end
    end
    
    criteria = Person.where(title: "Sir")
    criteria.merge(filter)
    
  • #1635 이제 모든 예외는 발생한 문제, 발생한 이유에 대한 세부 요약, 잠재적 해결 방법을 포함하여 보다 포괄적인 오류를 제공합니다. 예시:

    (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 이(가) 추가되었습니다. 단일 문서 가 반환되지 않으면 DocumentNotFound 오류가 발생합니다. (Piotr Jakubowski)

    Band.find_by(name: "Depeche Mode")
    
  • #1606 Mongoid는 이제 관계에 accept_nested_attributes_for를 추가할 때 Active Record와 같은 자동 저장을 활성화합니다.

    class Band
      include Mongoid::Document
      has_many :albums
      accepts_nested_attributes_for :albums # This enables the autosave.
    end
    
  • 이제 #1477 Mongoid가 대량 할당으로부터 ID 및 유형 속성을 자동으로 보호합니다. 액세스 가능 항목으로 재정의하여 이 값을 재정의할 수 있습니다(권장하지 않음).

    class Band
      include Mongoid::Document
      attr_accessible :id, :_id, :_type
    end
    
  • #1459 이제 작업 단위에 옵션을 전달하여 특정 코드 실행에 대해 ID 맵을 비활성화할 수 있습니다.

    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 이제 연관 관계는 단일 문서 지속성 작업에서 안전 옵션을 제공할 수 있습니다.

    band.albums.with(safe: true).push(album)
    band.albums.with(safe: true).create(name: "Smiths")
    
    album.with(safe: true).create_producer(name: "Flood")
    
  • #1348 이제 다대다 관계에서 선행 로드가 지원됩니다.

  • #1292 속성 제거는 이제 문서 를 저장할 때 nil로 설정하는 대신 속성 설정을 해제합니다.

    band = Band.find(id)
    band.remove_attribute(:label) # Uses $unset when the document is saved.
    
  • #1291 Mongoid 데이터베이스 세션은 이제 지연에 연결되며 완전히 스레드로부터 안전합니다. 새 스레드가 생성되면 해당 스레드에 대한 새 데이터베이스 세션이 생성됩니다.

  • #1291 이제 Mongoid는 mongoid.yml에 정의된 대로 데이터베이스 연결을 원하는 수만큼 지원합니다. 예를 예시 로컬 단일 서버 db, 다중 가용영역 복제본 세트 및 샤드 클러스터 가 모두 동일한 애플리케이션 환경에 있을 수 있습니다. 점 는 언제든지 모든 세션에 연결할 수 있습니다.

  • #1291 이제 Mongoid를 사용하면 with 을(를) 사용하여 쿼리별 또는 지속성 작업 기준으로 런타임에 원하는 데이터베이스 또는 컬렉션 을 유지할 수 있습니다.

    Band.with(collection: "artists").create(name: "Depeche Mode")
    band.with(database: "secondary).save!
    Band.with(collection: "artists").where(name: "Depeche Mode")
    
  • #1291 이제 새롭고 향상된 store_in 매크로를 사용하여 문서가 저장되는 위치를 모델별로 구성할 수 있습니다.

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

    물론 런타임에 with 메서드를 통해 재정의할 수 있습니다.

  • #1212 이제 내장된 문서를 지속성을 통해 관계에서 꺼낼 수 있습니다.

    band.albums.pop # Pop 1 document and persist the removal.
    band.albums.pop(3) # Pop 3 documents and persist the removal.
    
  • #1188 관계에 관계가 비어 있는지 여부를 간단하게 확인할 수 있는 존재 조건자가 있습니다. (앤디 모리스)

    class Band
      include Mongoid::Document
      embeds_many :albums
      embeds_one :label
    end
    
    band = Band.new
    band.albums?
    band.has_albums?
    band.label?
    band.has_label?
    
  • #1188 1-1 관계에 현재 관계가 존재하지 않는 액세스 시 빈 속성을 사용하여 관계를 자동으로 빌드 할지 여부를 나타내는 :autobuild 옵션이 이제 관계에 추가되었습니다. embedded_one, embedded_in, has_one, embedded_to에서 작동합니다. (앤디 모리스)

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

    존재 검사를 사용할 때는 자동 빌드가 실행되지 않습니다.

    band = Band.new
    band.label? # Returns false, does not autobuild on a check.
    band.has_label? # Returns false, does not autobuild on a check.
    
  • #1081 Mongoid는 다형성 embedded_to에 index: true 를 제공할 때 ID 와 유형을 모두 복합 인덱스 로 인덱싱합니다.

    class Comment
      include Mongoid::Document
    
      # Indexes commentable_id and commentable_type as a compound index.
      belongs_to :commentable, polymorphic: true, index: true
    end
    
  • #1053 정의되지 않은 필드 를 설정하다 하려고 할 때 no 메서드 대신 Mongoid::Errors::UnknownAttribute 를 발생시키고 동적 필드 허용을 false로 설정합니다. (Cyril Mougel)

    Mongoid.allow_dynamic_fields = false
    
    class Person
      include Mongoid::Document
      field :title, type: String
    end
    
    Person.new.age = 50 # raises the UnknownAttribute error.
    
  • #772 이제 필드를 읽기 전용으로 플래그 지정하여 새 문서 인 경우에만 해당 값을 설정하다 수 있습니다.

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

    오류가 발생하는 update_attribute 및 remove_attribute를 제외하고는 지속형 문서에 읽기 전용 값을 설정하다 하려고 할 때 무시됩니다.

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

주요 변경 사항(이전 버전과 호환되지 않음)

  • 다형성 관계는 객체 ID 이외의 ID를 가질 수 없습니다. 이는 Mongoid가 관계의 반대편에 있는 다양한 클래스가 잠재적으로 모두 다를 수 있으므로 ID를 저장 하는 것을 최적화된 방식으로 올바르게 파악할 수 없기 때문입니다.

이전에는 허용되지 않았지만, 명시적으로 언급된 곳은 없습니다.

  • #2039 관계의 존재 여부를 검증하는 것은 이제 관계와 외래 키 값을 모두 확인합니다.

  • 인덱싱 구문이 변경되었습니다. 첫 번째 매개변수는 이제 이름/방향 쌍의 해시이며, 추가 옵션을 위한 두 번째 해시 매개변수는 선택 사항입니다.

    옵션이 있는 일반 인덱싱 , 방향은 1 또는 -1 입니다.

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

    지리 공간적 인덱싱 에는 방향으로 '2d'가 필요합니다.

    class Venue
      include Mongoid::Document
      field :location, type: Array
    
      index location: "2d"
    end
    
  • 사용자 지정 직렬화 가능 필드가 개선되었습니다. 객체 에 더 이상 Mongoid::Fields::Serializable 이(가) 포함되어서는 안 되며 대신 3 메서드 #mongoize, .demongoize , .evolve)만 구현 하면 됩니다.

    #mongoize 객체 를 mongo 친화적인 값으로 변환하는 인스턴스 메서드입니다.

    .demongoize 클래스 메서드로, mongo 에서 일부 데이터를 가져와 사용자 지정 유형의 객체 를 인스턴스화할 수 있습니다.

    .evolve 모든 객체 를 가져와서 Mongoid::Criteria 에서 사용할 수 있도록 변환할 수 있는 클래스 메서드입니다.

    다음은 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 더 이상 무관심한 액세스 을 가진 해시가 아닙니다.

  • after_initialize 옵션이 설정하다 경우 콜백이 더 이상 하위 항목에 계단식으로 적용되지 않습니다.

  • 메모리 및 mongo 컨텍스트에서 #1865 count 이제 열거형에서 Ruby 의 count 와 정확히 동일하게 동작하며 객체 또는 차단 을 사용할 수 있습니다. 이는 차단 을 전달하는 것을 제외하고는 메모리에 있는 모든 것을 로드하지 않도록 mongo 컨텍스트에 최적화되어 있습니다.

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

    메모리 컨텍스트와 mongo 컨텍스트 모두에서 서명은 동일하지만, 내장된 문서가 이미 메모리에 로드되어 있으므로 메모리 컨텍스트에 대해서는 차단 구문만 사용하는 것이 좋습니다.

    또한 건너뛰기 및 제한을 고려하기 위해 부울을 전달하는 기능은 반드시 유용한 기능 이 아니므로 더 이상 지원되지 않습니다.

  • autocreate_indexes 구성 옵션이 제거되었습니다.

  • Model.defaults 더 이상 존재하지 않습니다. Model.pre_processed_defaultsModel.post_processed_defaults 조합으로 모든 기본값을 가져올 수 있습니다.

    Band.pre_processed_defaults
    Band.post_processed_defaults
    
  • Model.identityModel.key 이(가) 제거되었습니다. 사용자 지정 ID의 경우 사용자는 이제 _id 필드 를 재정의해야 합니다.

    기본값 이 절차인 경우 다른 모든 속성이 설정하다 후에 기본값 이 적용됩니다.

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

    기본값 을 다른 속성 보다 먼저 적용하려면 :pre_processed 를 true로 설정하다 합니다.

    class Band
      include Mongoid::Document
      field :_id,
        type: String,
        pre_processed: true,
        default: ->{ BSON::ObjectId.new.to_s }
    end
    
  • Mongoid.add_language 기능 과 함께 다양한 언어의 사용자 지정 애플리케이션 예외가 제거되었습니다.

  • Mongoid는 더 이상 1.8 을(를) 지원하지 않습니다. 1.9 모드의 자기공명영상(MRI 1.9.3 이상 또는 JRuby 1.6 이상만 지원됩니다.

  • #1734 여러 ID가 있는 Model.find 를 통해 문서를 검색할 때 Mongoid는 모든 ID가 발견되지 않으면 오류를 발생시키고 누락된 ID가 무엇인지 알려줍니다. 이전에는 아무것도 반환되지 않은 경우에만 오류가 발생했습니다.

  • #1675 관계에 현재 상태 유효성 검사 를 추가하면 이제 자동 저장이 활성화됩니다. 이는 새 상위 객체 가 새 하위 객체와 함께 저장되고 유효한 것으로 표시된 경우 데이터베이스 에서 올바른 상태 를 보장하기 위해 둘 다 유지되도록 하기 위한 것입니다.

  • #1491 빈 번역이 액세스 시 빈 해시를 반환하는지 확인합니다.

  • #1484 Model#has_attribute? 이(가) 이제 Active Record와 동일하게 작동합니다.

  • #1471 Mongoid는 더 이상 시간의 정밀도를 떨어뜨리지 않습니다.

  • #1475 이제 활성 지원의 구역 가 정의된 경우 시간 직렬화에서 기본값 사용됩니다.

  • #1342 Model.findmodel.relation.find 는 이제 단일 또는 여러 개의 ID만 사용합니다. 조건 해시가 있는 첫 번째/마지막/모두가 제거되었습니다.

  • #1291 mongoid.yml이 완전히 개선되었으며 기존 애플리케이션을 업그레이드하면 몇 가지 멋진 Mongoid 관련 구성 오류가 발생합니다. 기존 rake 작업 을 통해 새 mongoid.yml을 다시 생성할 수 있으며, 모든 구성 가능성에 도움이 되도록 미친 수준으로 주석 처리되어 있습니다.

  • #1291 persist_in_safe_mode 구성 옵션이 제거되었습니다. 이제 mongoid.yml에서 데이터베이스 세션을 기본값 안전 모드 에서 유지할지 여부를 지정해야 합니다.

    production:
      sessions:
        default:
          database: my_app_prod
          hosts:
            - db.app.com:27018
            - db.app.com:27019
          options:
            consistency: :eventual
            safe: true
    
  • #1291 safelyunsafely 이(가) 제거되었습니다. 이제 with 를 사용하여 런타임에 안전 모드 옵션을 제공하세요.

    Band.with(safe: true).create
    band.with(safe: { w: 3 }).save!
    Band.with(safe: false).create!
    
  • #1270 관계 매크로가 해당 AR 매크로와 일치하도록 변경되었습니다: 이제 :has_one, :has_many, :has_and_belongs_to_many 및 :belongs_to만 존재합니다.

  • #1268 Model#new? 이 제거되었으므로 이제 개발자는 항상 Model#new_record? 를 사용해야 합니다.

  • #1182 외래 키 필드 값을 설정한 후 관계를 새로 고치기 위해 더 이상 다시 로드할 필요가 없습니다. 이는 액티브 레코드와 정확히 동일하게 작동합니다.

    ID가 설정하다 되어 있지만 해당 문서 가 유지되지 않은 경우 관계에 액세스하면 빈 결과가 반환됩니다.

    ID가 설정하다 있고 해당 문서 가 지속되는 경우 관계에 액세스하면 문서 가 반환됩니다.

    ID가 설정하다 되어 있지만 이후에 기본 문서 가 저장되지 않은 경우 다시 로드하면 문서 가 원래 상태 로 돌아갑니다.

  • #1093 배열, 해시, 정수 및 부울에 대한 필드 직렬화 전략이 보다 일관적인 되고 적절한 경우 AR과 일치하도록 변경되었습니다.

    배열의 직렬화 Array.wrap(object) 호출 해시의 직렬화 Hash[object] 호출( 객체 의 to_hash) 정수의 직렬화 는 항상 to_i 를 통해 int를 반환합니다. 부울의 직렬화 는 nil 대신 false로 기본 설정됩니다.

  • # $size가 기호의 크기 메서드와 충돌하지 않도록 하기 위한 기준에서933 :field.size 의 이름이 :field.count 로 변경되었습니다.

  • #829/#797 Mongoid 범위 지정 코드가 완전히 재작성되어 이제 Active Record API 와 일치합니다. 이러한 이전 버전과 호환되지 않는 변경으로 인해 일부 메서드가 제거되거나 이름이 변경되었습니다.

    Criteria#as_conditions 및 Criteria#퓨즈는 더 이상 존재하지 않습니다.

    Criteria#merge는 이제 to_criteria 에 응답하는 다른 객체 만 허용합니다.

    Criteria#merge! 이제 새 기준 객체 를 만들지 않고 다른 객체 에 병합됩니다.

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

    명명된 범위와 기본값 범위는 더 이상 해시를 매개 변수로 사용하지 않습니다. 이제부터는 기준과 절차 래핑 기준만 허용되며, 인수가 정확하지 않으면 오류가 발생합니다.

    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
    

    'named_scope' 매크로가 제거되었으며, 이제부터는 'scope'만 사용합니다.

    Model.unscoped는 이제 차단 차단 의 모든 호출에 기본값 범위 지정이 적용되지 않습니다.

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

    Model.scoped는 이제 기준 옵션 해시에 직접 설정하다 되는 옵션을 사용합니다.

    Band.scoped(skip: 10, limit: 20)
    
  • #463 Document#upsert 은(는) 더 이상 Document#save (으)로 별칭이 지정되지 않으며 이제 호출 시 실제로 적절한 MongoDB 업서트 명령을 수행합니다. 이전에 이 메서드를 사용한 적이 있고 동일한 동작을 원하는 경우 save 로 전환하세요.

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

해결된 문제

  • #2166 Criteria#from_map_or_db 은 즉시 로드할 때 유형이 올바른지 확인한 후 유형 선택을 제거합니다.

  • #2129 임베딩 다중 관계의 모든 필드에 대한 정렬이 수정되었습니다.

  • #2124 편집증 문서의 기본값 범위와 삭제된 범위를 수정했습니다.

  • #2122 내장된 문서가 부울 필드에서 정렬되도록 허용합니다.

  • #2119 Criteria#update_all 가 원자 조작 및 일반 세트를 허용하도록 허용합니다.

  • #2118 DateTime -> Time 변환 중에는 정밀도를 제거하지 않습니다.

  • #2117 중첩된 속성을 사용할 때 임베드 하나의 관계에 콜백이 실행 합니다.

  • #2110 Model#touch 이(가) 이제 내장된 문서에서 제대로 작동합니다.

  • #2100 delete_at 이 설정하다 편집증 문서에서 원자 조작이 올바르게 실행되도록 허용합니다.

  • #2089 외래 키와 관련하여 mongoization과 진화를 적절히 분리합니다.

  • #2088 ID가 객체 ID로 저장된 경우 string ID로 찾기를 허용하여 ID 맵에서 가져옵니다.

  • #2085 float 및 int를 큰 소수점으로 악마화할 수 있습니다.

  • #2084 메타데이터 가 존재하지 않으면 계단식으로 배열하지 않습니다.

  • #2078 이제 Model#clone 또는 를 Model#dup 호출하면 속성이 더티로 올바르게 설정됩니다.

  • #2070 created_at도 있는 새 문서에 대해 updated_at을 수동으로 재정의할 수 있습니다.

  • #2041 긴급 로드가 0개의 문서를 반환한 후에는 관계 액세스 에서 데이터베이스 에 여러 번 충돌하지 않도록 합니다.

  • #1997 계단식 콜백은 종료 시 콜백 체인을 중지할 수 있어야 합니다.

  • #1972 added, loadedunloaded 는 이제 1-n 관계의 일부인 문서 에서 유효한 범위 이름이 될 수 있습니다.

  • 내장된 문서의 #1952/#1950 #all_in 동작이 이제 빈 배열 을 전달할 때 루트 문서와 올바르게 일치합니다. (한스 핫셀버그)

  • #1941/#1939 Model.find_by 는 이제 찾을 수 없음 오류 발생이 false로 설정하다 경우 nil을 반환합니다. (한스 핫셀버그)

  • 이제 내장된 문서에서 #1859/#1860 Model#remove_attribute 가 올바르게 설정 해제됩니다. (Anton Onyshchenko)

  • #1852 계단식 콜백에서 무한 재귀가 발생하지 않도록 합니다. (Ara Howard)

  • 이제 ID 맵이 활성화된 상태에서 #1823 Relation#includes? 이(가) 제대로 작동합니다.

  • #1810 Model#changed? 는 해시 및 배열 필드에만 액세스한 경우 더 이상 true를 반환하지 않습니다.

  • #1876/#1782 임베드 많은 기준 쿼리에서 점 표기법 을 허용합니다. (Cyril Mougel)

  • #1745 속성 설정 내에서 배치 삭제가 작동하도록 수정했습니다.

  • #1718 관계에서 #first/#last 의 일관성 을 보장 - 이제 데이터베이스 에서는 항상 first/last 와 일치하지만 메모리에서는 먼저 선택합니다.

  • #1692/#1376 Model#updateattributesModel#update_attributes! 는 이제 할당 옵션을 허용합니다. (한스 핫셀버그)

  • #1688/#1207 네임스페이스 내부의 관계 매크로에 클래스 이름을 제공할 때 네임스페이스 스페이스를 필요로 하지 않습니다. (한스 핫셀버그)

  • #1665/#1672 중첩된 기준 선택기에서 #matches와 같은 복잡한 기준을 확장합니다. (한스 핫셀버그)

  • #1335 첫 번째/마지막에 ID 정렬 기준을 추가하지 마세요. 기준에 정렬 옵션이 이미 있는 경우입니다.

  • #1321 참조된 많은 열거 가능한 대상이 이제 해시 백업되어 보다 효율적인 방식으로 중복을 방지합니다.

  • 이제 #1135 DateTimes에서 역직렬화 시 시간대를 올바르게 가져옵니다.

  • #1031 Mongoid는 이제 배열 필드의 값을 가능한 경우 적절한 Mongo 친화적인 값으로 직렬화합니다.

  • #685 내장된 문서에 버전 관리를 사용하려고 하면 이제 개발자 에게 이것이 허용되지 않는다는 경고를 보내는 적절한 오류가 발생합니다.

2.6.0

새로운 기능

  • #2709 Mongoid 3 에서 touch 기능을 백포트했습니다.

2.5.2

해결된 문제

  • #2502 문서 에 Mongoid::Timestamps::Updated 이 포함되지 않은 경우 캐시 키를 올바르게 처리하다 수정했습니다. (아서 노게이라 네베스)

2.5.1

해결된 문제

  • #2492 백포트 계단식 콜백 성능 및 메모리 수정을 3.0.0-stable에서 수정합니다.

  • #2464 속성을 업데이트할 때 메모리에 많은 관계를 유지하기 위해 중첩된 속성을 백포트합니다. (크리스 톰슨)

2.5.0

새로운 기능

  • 이 릴리스는 1.7.0 이상 mongo 및 BSON gem을 지원하고 2.4.x 시리즈가 1.6.2미만으로 잠김

2.4.12

해결된 문제

  • #2178 임베딩된 관계를 교체한 후에 삭제 콜백이 실행 게시 확인합니다.

  • #2169 콜백 에서 저장 후 문서가 파기될 때 저장 전달을 허용합니다.

  • 편집증 문서에 대한 #2144 이제 고유성 유효성 검사 가 올바르게 범위를 지정합니다.

  • #2127 중첩된 속성 삭제 중에 내장된 문서의 상위 항목을 바인딩 해제하지 마세요.

2.4.11

해결된 문제

  • 이 릴리스에서는 mongo 드라이버 버전이 1.6.2 으로 제한됩니다. Mongo::Connection.from_uri API의 변경으로 인해 더 이상 유효한 연결 옵션을 허용하지 않습니다.

  • #2040 국가 및 국가 및 언어 설정 설정 유효성 검사 에 대한 잘못된 보간 문제를 수정했습니다.

  • #2038 양쪽에 정의된 경우 역관계가 inverse_of 선언이 아닌 외래 키만으로 결정되도록 허용합니다.

  • #2023 핵심 Ruby 메서드와 충돌하는 동적 유형의 직렬화가 계속 직렬화되도록 허용합니다.

  • #2008 현재 상태 유효성 검사 는 메모리의 관계가 비어 있는 경우 데이터베이스를 눌러 유효성을 확인해야 합니다.

  • #2006 #only 호출 실행 게시 _id 필드 만 제외하도록 허용합니다.

2.4.10

해결된 문제

  • 내장된 문서 가 데이터베이스 에 nil로 저장된 경우 #2003 문서 생성에 실패하지 마세요.

  • #1997 before_destory 콜백 이 false를 반환하는 경우 중첩된 속성을 통해 편집증적인 내장된 Docs 를 삭제 하지 마세요.

  • #1994 dependent: :delete 는 이제 각 문서 에 대해 한 번이 아닌 일대다 및 다대다 관계에 대해 데이터베이스 를 한 번만 조회합니다.

  • #1987 작업 단위 내에서 두 번 선행 로드할 때 ID 맵에 문서를 이중 삽입하지 않습니다.

  • #1953 이제 고유성 유효성 검사 가 현지화된 필드에서 작동합니다.

  • #1936 상위 항목의 업데이트 호출에서 중첩된 속성이나 문서 자체를 사용하지 않는 경우 모드 충돌 없이 n 레벨 깊이 내장된 문서를 원자적으로 설정할 수 있습니다.

  • #1957/#1954 데이터베이스 이름이 상속으로 설정하다 되어 있는지 확인합니다. (한스 핫셀버그)

2.4.9

해결된 문제

  • #1943 큰 소수점에 대해 숫자 유효성 검사 가 작동하는지 확인합니다.

  • #1938 이제 길이 유효성 검사 가 현지화된 필드에서 작동합니다.

  • #1936 다른 푸시와 충돌하는 푸시가 이제 제대로 처리됩니다.

  • #1933 Proxy#extend 는 대상에 위임해야 하며, 여기서 프록시 자체 확장은 이제 Proxy#proxy_extend 를 통해 처리됩니다.

  • #1930 모든 where 절에서 복잡한 기준이 확장되었는지 확인합니다. (한스 핫셀버그)

  • #1928 중첩된 속성을 통해 내장된 문서를 삭제할 때 모든 경우를 커버하기 위해 $pullAll 대신 $pull with id match criteria(ID 일치 기준 포함)를 수행합니다. 이미 유지된 문서에 이전에 새로 추가된 기본값은 문서가 데이터베이스 의 문서와 일치하지 않기 때문에 이 문제에서 삭제할 수 없습니다.

  • #1924/#1917 새 문서 에서 범위를 지정하지 않는 기본값 범위를 사용하여 포함된 관계로 푸시하는 문제를 수정합니다. (한스 핫셀버그)

  • #1922/#1919 컬렉션을 삭제하면 고정 사이즈 컬렉션을 정의할 때 항상 고정 사이즈 컬렉션으로 다시 생성되도록 내부 래핑된 컬렉션 의 메모리가 해제됩니다. (Hans Hasselberg)

  • #1916/#1913 고유성 유효성 검사 가 더 이상 기본값 범위의 영향을 받지 않습니다. (한스 핫셀버그)

  • #1943 큰 소수점에 대해 숫자 유효성 검사 가 작동하는지 확인합니다.

2.4.8

해결된 문제

  • #1892 마스터가 아닌 작업 오류가 발생하면 Mongoid는 작업을 다시 시도하기 전에 다시 연결해야 합니다.

  • #1887 콜백 이 정의되지 않은 하위 항목에 콜백을 계단식으로 배치하지 마세요.

  • #1882 중복 ID 기준을 중복 선택 항목이 있는 $and로 확장하지 마세요.

  • #1878 반복 시 특정 only 또는 without 선택 항목에 적용 되지 않도록 기본값 애플리케이션 값이 firstlast 뿐만 아니라 수정되었습니다.

  • #1874 공백이 아닌 삭제 값으로 값을 올바르게 처리하다 하도록 모든 공백 거부 절차 상수를 수정했습니다. (Ste판 Daschek)

  • #1869/#1868 지연된 원자 세트는 이제 메타데이터 이름 대신 원자 경로를 사용하여 다중 레벨 임베딩 문제를 수정합니다. (Chris Micacchi 제공 사양)

  • #1866 게시 처리 기본값(procs)은 관계 내 하위 항목의 바인딩 후에 적용되어야 합니다. 빌드.

2.4.7

해결된 문제

  • 내장된 문서를 다시 로드할 때 상위 문서에 대한 참조가 유지되는지 확인합니다.

  • #1837 항상 운전자 에 기호 옵션을 전달합니다.

  • #1836 관계 카운트가 외래 키 링크가 지속되지 않은 지속 문서 를 선택하는지 확인합니다.

  • #1820 embeddeds_many에 내장된 문서를 삭제하면 기본 _uncoped 대상에서 문서 가 제거되고 관계를 다시 인덱스해야 합니다.

  • #1814 after_initialize에 콜백을 계단식으로 배열하지 마세요.

  • #1800 이제 mongo 연결에 대한 유효하지 않은 옵션이 필터링됩니다.

  • #1785 인스턴스 검사를 올바르게 처리하다 하기 위해 대소문자 동일성이 수정되었습니다.

2.4.6

해결된 문제

  • #1772 문자열을 정수로 변환하려면 건너뛰기 및 제한을 허용합니다. (장 부시에)

  • #1767 Model#update_attributes가 대량 할당 옵션을 다시 허용합니다. (한스 핫셀버그)

  • 이제 #1762 Criteria#any_of가 현지화된 필드를 올바르게 처리합니다.

  • #1758 이제 메타데이터가 외부 라이브러리 지원 옵션에 대해 자체를 반환합니다.

  • #1757 직렬화가 모든 속성 유형을 필드 에 정의된 유형으로 변환하는지 확인합니다.

  • #1756 직렬화 가능한 해시 옵션은 내장된 Docs 로 전달되어야 합니다.

2.4.5

해결된 문제

  • #1751 이제 Mongoid의 로거가 Ruby 로깅 API 호환성 수준에 응답합니다.

  • #1744/#1750 이제 기준 API 를 사용하여 내장된 문서의 현지화된 필드에 대해 정렬이 작동합니다. (한스 핫셀버그)

  • #1746 이제 존재 여부 유효성 검사 에서 현지화된 필드에 대해 비어 있던 국가 및 언어 설정이 표시됩니다. (Cyril Mougel)

  • #1727 포함된 기준의 점 표기법 이 하나의 임베드와 임베드 모두에서 모두 작동하도록 허용합니다. (라일 언더우드)

  • #1723 초기화 콜백은 하위 항목이 변경되었는지 확인할 필요 없이 하위 항목을 통해 계단식으로 진행되어야 합니다.

  • #1715 이제 직렬화 가능한 해시가 저장당 또는 저장 게시 내장된 문서를 포함할 때 일관적인 됩니다.

  • #1713 클래스를 하위 클래스의 인스턴스 와 비교할 때 === 검사를 수정합니다.

  • #1495 콜백이 더 이상 버스트된 1.8.7 에서 '메서드 외부에서 슈퍼 호출' 오류를 발생시키지 않습니다. 루비.

2.4.4

해결된 문제

  • #1705 다대다 외래 키의 순서를 변경할 수 있도록 허용합니다.

  • #1703 에서 업데이트된 항목이 이제 다시 버전이 지정됩니다. (Lucas Souza)

  • #1686 바인딩 해제에 대한 기본 메타데이터 와 관계에 대한 바인드를 설정합니다.

  • #1681 하위 디렉토리에 대한 네임스페이스가 없는 경우 네임스페이스 스페이스 없이 모델에 대한 인덱스를 생성하려고 시도합니다.

  • #1676 즉시 로드가 기본값 범위로 작동하도록 허용합니다.

  • #1665/#1672 중첩된 기준 선택기에서 #matches와 같은 복잡한 기준을 확장합니다. (한스 핫셀버그)

  • #1668 경고를 호출하기 전에 Mongoid 로거가 있는지 확인합니다. (레미 쿠타블)

  • #1661 복제된 문서에서 고유성 유효성 검사 가 작동하는지 확인합니다.

  • #1659 동일한 임베디드 관계를 재설정할 때 지연된 원자 세트를 지웁니다.

  • #1656/#1657 범위와 속성이 모두 변경되지 않은 경우 고유성 유효성 검사 를 위해 데이터베이스 를 적중하지 않습니다. (priyaaank)

  • #1205/#1642 Criteria#onlyCriteria#without 를 통해 데이터베이스 에서 반환되는 필드를 제한한 다음 이후에 문서 를 저장하는 경우. 기본값이 더 이상 제외된 필드를 재정의하지 않습니다.

2.4.3

해결된 문제

  • #1647 이미 UTC에 있을 때 DateTime 직렬화가 현지 시간으로 변환되지 않습니다.

  • #1641/#1639 Mongoid.observer.disable :all이 이제 AR처럼 작동합니다.

  • #1640 업데이트 소비자는 클래스 이름이 아닌 유지되는 컬렉션 의 이름에 연결되어야 합니다.

  • #1637/#1636 범위는 더 이상 하위 클래스화할 때 상위 클래스 범위를 수정하지 않습니다. (한스 핫셀버그)

  • #1629 임베딩된 다수 관계에 대한 $all 및 $in 기준은 이제 정규식 검색과 다양한 길이의 요소를 올바르게 처리합니다. (Douwe Maan)

  • #1623/#1634 기본 범위가 더 이상 Mongoid::Versioning을 중단하지 않습니다. (한스 핫셀버그)

  • #1605 구조 응답의 회귀 수정, Rails 3.2

2.4.2

해결된 문제

  • #1628 _type 필드 를 include_type_for_serialization을(를) 사용하여 글로벌 옵션으로 JSON 또는 xml로 직렬화할 때 다시 한 번 포함할 수 있습니다. (Roman Shterenzon)

  • #1627 Validating format now works properly with localized fields. (Douwe Maan)

  • #1617 이제 관계 프록시 메서드가 Mongoid의 금지된 필드 목록에 표시됩니다.

  • #1615 모든 사양 실행에 대해 호스팅하다 및 포트의 단일 구성을 허용하며, MONGOID_spec_HOST 및 MONGOID_spec_PORT 환경 변수를 설정하여 재정의합니다.

  • #1610 편집증이 있는 문서의 버전을 관리하고 최대 버전이 설정하다 경우 포함된 관계에서 이전 버전을 영구 삭제 합니다.

  • #1609 커서 반복 및 다른 모든 작업 중에 연결 재시도를 허용합니다.

  • #1608 중첩된 속성에 ID를 전달하고 문서가 존재하지 않을 때 메서드 없음 오류를 방지합니다.

  • #1605 구조 응답에 대한 사용 중단 경고 제거, Rails 3.2

  • #1602 타입캐스팅 시 $and 및 $or 쿼리의 구조를 유지합니다.

  • #1600 관계 제공 시 고유성 유효성 검사 에서 더 이상 오류가 발생하지 않습니다.

  • #1599 #each를 수행할 때 열거 가능한 대상이 메모리에 있는 대상을 먼저 양보하지만 항상 언로드된 대상이 먼저는 아닙니다.

  • #1597 동일한 요소를 가진 배열 필드의 순서를 변경하는 기능 을 수정합니다.

  • #1590 필드 가 배열 내에 중첩된 기준에서 부울 값의 적절한 직렬화를 허용합니다.

2.4.1

해결된 문제

  • #1593 이제 내장된 문서의 배열이 원본 버전에서 수정될 때 원자적으로 올바르게 업데이트 됩니다.

  • #1592 create_indexes rake 작업 에서 인덱스 생성 예외를 허용하지 마세요.

  • #1589 메모리에 아직 문서가 로드되지 않은 경우 HABTM에 빈 배열 을 할당할 수 있습니다.

  • #1587 배열 필드 의 이전 값이 명시적 nil이었던 경우 이제 새 값으로 원자 단위로 재설정할 수 있습니다.

  • 이제 동적 필드를 허용할 때1585 Model#respond_to? 이(가) 세터에 대해 true를 반환합니다.

  • #1582 배열에 nil 값을 설정하다 수 있도록 허용합니다.

  • #1580 저장 게시 배열이 비어 있을 뿐만 아니라 nil로 설정하다 되도록 허용합니다.

  • #1579 기준의 개별 설정하다 필드 요소에 대해 #to_a를 호출하지 마세요.

  • #1576 유효성을 검사하는 필드 가 변경되지 않은 경우 고유성 유효성 검사 에서 데이터베이스 를 적중하지 않습니다.

  • #1571 별칭이 지정된 필드는 원래 이름과 별칭 모두에 대한 모든 더티 속성 메서드와 모든 게터 및 세터를 가져옵니다. (한스 핫셀버그)

  • #1568 환경이 구성되지 않은 경우 경고와 함께 개발 환경으로 대체됩니다.

  • #1565 비표준 Ruby 또는 데이터베이스 이름이 있는 필드 및 외래 키의 경우, 접근자 및 더티 메서드를 생성하기 위해 class_eval 대신 explain_method를 사용합니다.

  • #1557 내부 전략 클래스가 더 이상 모델과 충돌하지 않습니다.

  • # 이제1551 상위 문서는 true Model#changed? 하위(포함된) 문서만 변경된 경우 에 대해 을 반환합니다.

  • #1547 새 항목이 게시 콜백까지 기다릴 때 상위 저장에서 지속된 하위 항목을 재설정하여 업데이트 기능을 미러링합니다.

  • #1536 이제 포함이 지정된 경우 기준에 대해 first 또는 last 를 호출할 때 선행 로드가 발생합니다.

2.4.0

새로운 기능

  • 이제 범위를 #where 기준에 전달하여 내부에 $gte/$lte 쿼리 를 생성할 수 있습니다. Person.where(dob: start_date...end_date)

  • 이제 사용자 지정 직렬화 가능 필드가 #selection을 재정의하여 기준 쿼리에 대한 사용자 지정 직렬화를 제공할 수 있습니다.

  • #1544 내부에서는 이제 가능한 경우 to_a Array.wrap 를 사용합니다.

  • #1511 이제 현재 상태 유효성 검사 에서 현지화된 필드를 지원합니다. (티아고 라파엘 고디뉴)

  • #1506 Model.set 은(는) 이제 false 및 nil 값을 허용합니다. (Marten Veldthuis)

  • #1505 Model.delete_all/destroy_all 이제 :condition 해시 또는 속성을 직접 사용합니다.

  • #1504 Model.recursively_embeds_many 은(는) 이제 :cascade_callbacks 옵션을 허용합니다. (파벨 프라보수드)

  • #1496 이제 Mongoid는 다른 애플리케이션 에서 문자열로 저장되는 기호 필드에 대해 문자열을 기호로 다시 캐스팅합니다.

  • #1454, #900 이제 연관 관계에는 .build 또는 build_ 메서드가 호출된 후에 실행되는 after_build 콜백 이 있습니다. (제프리 존스, 라이언 타운센드)

  • #1451 이제 범위는 숫자뿐만 아니라 모든 범위 값이 될 수 있습니다. (아우파호어)

  • #1448 이제 정렬 시 현지화가 사용됩니다. (한스 핫셀버그)

  • #1422 Mongoid는 환경을 찾을 수 없는 경우 yaml 로드 시 오류를 발생시킵니다. (톰 스튜어트)

  • #1413 $not 지원 이 기준 기호 메서드에 추가되었습니다. (마크 웨일)

  • #1403 기존 메서드와 동일한 이름으로 명명된 범위를 정의할 때 오류가 발생하면 기본값이 false인 구성 옵션 scope_overwrite_exception 이(가) 추가되었습니다. (크리스토프 그라보)

  • 이제 #1388 model.add_to_set 은(는) 여러 값 추가를 지원하며 내부적으로 $each를 사용하여 $addToSet를 수행합니다. (Christian Felder)

  • #1387 Rails 캐싱에 사용할 Model#cache_key 이(가) 추가되었습니다. (세이반 헤이다리)

  • #1380 Model.find(ID)를 호출하면 이제 _id 필드 의 유형에 따라 모든 유형으로 올바르게 변환됩니다.

  • #1363 현지화된 필드에 대체 및 기본값 지원 을 추가하고 모든 번역을 한 번에 가져오고 설정하다 기능 을 추가했습니다.

  • #1362 별칭이 지정된 필드가 이제 기준에서 올바르게 유형 변환됩니다.

  • #1337 HABTM을 포함한 배열 필드의 많은 외래 키가 이제 더 스마트한 더티 검사를 수행하며 배열 이 변경된 경우 더 이상 간단한 $ 설정하다 을 수행하지 않습니다. 항목이 배열 에만 추가된 경우 $pushAll을 수행합니다. 항목이 제거만 된 경우에는 $pullAll을 수행합니다. 추가와 제거가 모두 발생한 경우 모드 충돌을 피하기 위해 $ 설정하다 를 수행합니다.

해결된 문제

  • Rubinius에서 동결된 문서 에 대해 Document#as_document 을(를) 호출하면 nil 대신 속성이 반환됩니다.

  • #1554 기본값 의 애플리케이션 을 proc/non-procs로 분할하며, 여기서 non-procs는 인스턴스화하는 동안 즉시 실행되고 procs는 다른 모든 값이 설정하다 후에 실행됩니다.

  • #1553 배열 에서 값을 추가하고 제거하는 조합은 새 값이 아닌 배열 의 현재 내용에 $ 설정하다 를 사용합니다.

  • #1546 더티(dirty) 변경 사항은 무관심 액세스 이 있는 해시로 반환되어야 합니다.

  • #1542 이제 선행 로드는 연결을 가져올 때 기준에 제공된 옵션(즉, 건너뛰기, 제한)을 따릅니다.

  • #1530 배열 이 외래 키 필드 인 경우 더티 추적을 통해 배열에 추가된 값을 복제하지 마세요.

  • #1529 unscoped 관계형 연관 관계에서 호출이 이제 제대로 작동합니다.

  • #1524 외래 키 기본값 을 사전 설정하여 재정의된 필드 세터의 관계에 액세스 를 허용합니다.

  • #1523 disable 을(를) 통해 관찰자를 비활성화할 수 있습니다. (조나스 슈나이더)

  • #1522 Rails 3.2 에 대한 인덱스 레이크 생성 작업을 수정했습니다. (그레이 맨리)

  • #1517 RSpec의 stub_model과 제대로 작동하도록 Mongoid 문서를 수정합니다. (티아고 라파엘 고디뉴)

  • #1516 바인드에서 관계형 여러 문서를 복제하지 마세요.

  • #1515 Mongoid는 더 이상 기본값 으로 복잡한 기준에 따라 사용자 정의 필드를 직렬화하려고 시도하지 않습니다.

  • #1503 Has many 관계 대체는 이제 기존 문서와 새 Docs 가 혼합된 모든 종류를 처리합니다.

  • #1502 내장된 문서의 중첩된 속성은 하위 항목이 편집증적인지 여부를 고려합니다.

  • #1497 고유성 유효성 검사 실패 시 제공된 메시지를 사용합니다. (저스틴 이더지)

  • #1491 현지화된 필드에 기본값 설정하다 되지 않은 경우 nil을 반환합니다. (티아고 라파엘 고디뉴)

  • #1483 전송 모듈에는 런타임에 상위 문서 에 새 필드를 추가하는 , 하위 클래스에 필드를 추가하는 등이 포함됩니다.

  • #1482 새로운 정렬 옵션을 적용해도 이전에 연결된 기준에 병합되지 않습니다. (Gerad Suyderhoud)

  • #1481 기본값이 설정하다 되기 전에 다대다 관계에 액세스할 때 유효하지 않은 쿼리 를 수정합니다.

  • #1480 사용자 지정 직렬화 가능 유형의 Ruby 핵심 클래스와 충돌하지 않도록 Mongoid의 내부 직렬화된 필드 유형 이름이 내부로 변경되었습니다.

  • #1479 생성 또는 생성을 사용할 때 다대다 방식으로 ID를 중복하지 마세요!

  • #1469 extract_id가 nil을 반환하면 기준 선택기를 사용하여 ID 맵에서 문서 를 가져옵니다.

  • #1467 이제 메타데이터 라는 필드 를 정의하면 잘못된 필드 오류가 올바르게 발생합니다.

  • #1463 이제 배치 삽입 소비자의 범위가 컬렉션 으로 지정되어 콜백이 잘못된 위치로 이동하는 동안 다른 컬렉션에 문서가 지속되는 것을 방지합니다.

  • #1462 중첩된 속성을 통해 관계가 많은 할당 *_attributes= 관계를 자동 저장하지 않습니다.

  • #1461 전체 해시를 이스케이프하지 않도록 복잡한 기준의 외래 키 필드 직렬화를 수정했습니다.

  • #1458 버전 관리 시 대량 할당이 방지된 필드를 더 이상 건너뛰지 않습니다.

  • #1455, #1456 이제 모든 문서 에서 삭제를 호출하면 작업이 완료될 때까지 일시적으로 삭제 플래그가 지정된 것으로 표시됩니다. (Nader Akhnouk)

  • #1453 Model#to_key 은(는) 문서 가 파기될 때 값을 반환해야 합니다.

  • #1449 부작용으로 has one에서 교체할 때 새 문서가 더 이상 유지되지 않습니다. (jasonsides)

  • #1439 이(가) 포함되었나요? 관계가 주기적으로 정의된 경우 true를 반환해야 합니다.

  • #1433 임베디드 및 관계형 1-1 에 대한 다형성 중첩 속성이 이제 제대로 업데이트 됩니다.

  • #1426 이제 동결된 문서를 복제할 수 있습니다. (aagrawal2001)

  • #1382 인덱스 정의가 잘못된 경우 레이크 작업 을 통해 인덱스를 생성할 때 적절한 오류가 발생합니다. (마티유 라보)

  • #1381, #1371 이제 ID 맵이 상속된 문서에서 제대로 작동합니다. (Paul Canaverse)

  • #1370 내장된 배열의 concat을 자체 메서드로 분할하여 콜백 실행 후 문제로 인한 배치 처리 를 처리하다 합니다.

  • #1366 이제 더티 추적을 위해 배열과 해시 값이 딥 카피됩니다.

  • #1359 Lambda를 사용하여 명명된 모든 범위에 기본값 범위를 적용하지 않는 기능 을 제공합니다.

  • #1333 네임스페이스에 존재하는 사용자 지정 유형의 오류를 수정했습니다. (Peter Gumeson)

  • #1259 기본값은 데이터베이스 상태 와 다르면 더티로 처리됩니다.

  • #1255 내장된 문서가 정의된 기본값 범위를 준수하는지 확인합니다.

2.3.4

  • #1445 관계형 연관 관계에 대한 대상 열거형의 로드된 배열 에서 문서가 중복되는 것을 방지합니다.

  • #1442 관계에 하나의 관계가 있는 create_ 메서드를 사용할 때 기존 문서 를 바꿀 때 적절한 파괴 메서드가 호출됩니다.

  • #1431 열거 가능한 게시 는 로드된 배열 에 추가되어야 합니다. 즉, 차단 값을 기준으로 한 단락에는 예비 문서가 없다는 잘못된 설명이 포함됩니다.

  • #1418 수정을 위해 데이터베이스 에서 로드되는 문서가 더 이상 ID 맵에 배치되지 않습니다.

  • #1399 ID 가 int로 정의된 외래 키에서 문자열을 정수로 변환할 수 있도록 허용합니다.

  • #1397 정렬 기준이 이미 존재하는 경우 기본값 정렬 기준을 먼저 추가하지 않습니다.

  • #1394 수정 사항이 있나요? 개수가 1 보다 클 때 작동합니다. (닉 호프만)

  • #1392 필드 가 존재하지 않는 집계 함수에서 0 를 반환합니다.

  • #1391 이제 기본 키 정의를 사용하는 내장된 문서에서 고유성 유효성 검사 가 제대로 작동합니다.

  • #1390 _type 필드 가 소문자 클래스인 경우 상수화하기 전에 카멜화합니다.

  • #1383 서브클래싱된 직렬화 가능 필드에 대한 읽기 시 캐스트를 수정합니다.

  • #1357 내장된 문서 여러 수준에 있는 update_attributes의 지연 원자 세트가 이제 제대로 유지됩니다.

  • #1326 새로 빌드 된 하위 문서 를 저장한 후 HABTM의 기본 문서 가 키를 저장하는지 확인합니다.

  • #1301 이미 설정하다 경우 관계에 포함된 에 대한 기본 메타데이터 를 덮어쓰지 않습니다.

  • #1221 역 nil이 포함된 HABTM은 내장된 문서에서 다시 허용됩니다.

  • #1208 embedded_in에서 설정할 때 세터를 통해 하위 문서를 자동으로 유지하지 않습니다.

  • #791 루트 문서 는 내장된 문서만 변경된 경우 타임스탬프를 업데이트합니다.

2.3.3

해결된 문제

  • #1386 mongo/BSON 종속성을 1.3으로 낮췄습니다.

  • #1377 nil 또는 정의되지 않은 값을 올바르게 처리하다 집계 함수를 수정합니다. (맥심 가르시아)

  • #1373 범위가 다른 범위를 재정의하는 경우 경고합니다.

  • #1372 유효성 검사 를 위해 읽기 속성 내부에 바인딩할 때는 유지되지 않습니다.

  • #1364 BSON 객체 ID 가 아닌 ID를 가진 문서를 다시 로드하는 문제를 수정했습니다.

  • #1360 Active Support의 로드 후크에 후크를 걸어 Mongoid의 관찰자 인스턴스화 성능을 수정했습니다.

  • #1358 inverse_of가 nil로 설정하다 경우 다대다 동기화에서 유형 오류가 수정되었습니다.

  • 이제 #1356 $in 기준을 동일한 키의 복잡하지 않은 기준에 오류 없이 연결할 수 있습니다.

  • 1350#, #1351 string double 키를 매개 변수화할 때 따옴표 및 물결표의 변환 오류가 수정되었습니다.

  • #1349 Enumerable을 포함할 때 Mongoid 문서가 폭발하지 않아야 합니다. (조나스 니클라스)

2.3.2

해결된 문제

  • #1347 키로 수정자가 없는 해시 값이 제공될 때 포함된 매처를 수정합니다.

  • #1346 기준에서 첫 번째/마지막을 호출할 때 기본값 정렬 기준을 복제합니다.

  • #1343 Criteria#all_of 에 인수를 전달하지 않으면 모든 문서가 반환됩니다. (Chris Leishman)

  • #1339 중첩된 속성을 통해 삭제할 때 계단식 배열 가능한 하위 항목에서 삭제 콜백이 실행 되는지 확인합니다.

  • #1324 동일한 클래스를 참조하는 다대다에 inverse_of: nil 를 설정하면 역 외래 키에 대해 nil이 반환됩니다.

  • #1323 중첩된 속성의 속성 배열 에서 문자열과 기호를 모두 ID로 허용합니다. (마이클 우드)

  • #1312 이제 구성에서 로거를 설정하면 로거와 같은 돌팔이 모든 것이 허용됩니다.

  • #1297 기본이 새로운 것이라면 관계에 액세스할 때 데이터베이스 를 치지 마세요.

  • #1239 기본값 설정하다 게시 의 생성 블록에 참조 관계를 추가할 수 있습니다.

  • #1236 모든 모델이 레이크 작업에 로드되어 스레드 세이프 모드 에서도 모든 인덱스를 생성할 수 있도록 합니다.

  • #736 내장된 문서에서 #reload를 호출하면 이제 제대로 작동합니다.

2.3.1

해결된 문제

  • #1338 범위 또는 관계에서 #find를 호출하면 ID 맵의 문서 가 실제로 다른 범위 매개 변수와 일치하는지 확인합니다.

  • #1321 HABTM은 이전의 불일치 대신 더 이상 중복된 항목이나 키를 허용하지 않습니다.

  • #1320 perf 벤치마크의 오류를 수정했습니다.

  • #1316 Mongoid와 AR이 공존할 수 있도록 별도의 Rake 작업 'db:mongoid:drop'을 추가했습니다. (다니엘 바르타노프)

  • #1311 해시에서 상속되는 사용자 지정 필드 직렬화 관련 문제를 수정합니다.

  • #1310 ID 맵이 활성화된 경우 참조된 많은 열거 가능한 대상이 더 이상 로드 및 추가된 문서를 복제하지 않습니다.

  • #1295 여러 개의 포함이 첫 번째 항목의 긴급 로딩만 실행하도록 수정했습니다.

  • #1287 버전 관리 관련 최대 버전 제한을 수정했습니다.

  • #1277 attribute_write_change! 변경 사항이 발생하지 않은 경우에도 속성에 올바르게 플래그를 지정합니다.

  • #1063 편집증 문서가 소프트 삭제 시 삭제 콜백을 올바르게 실행 합니다.

  • #1061 시간 직렬화에 실패하면 Mongoid::Errors::InvalidTime 를 발생시킵니다.

  • #1002 변환을 시도할 때 합법적인 BSON ID를 확인합니다.

  • #920 관계가 대상으로 명명되도록 허용합니다.

  • #905 string 에 접두사가 붙은 ::이 정의된 경우 메타데이터 에서 정규화된 클래스 이름을 반환합니다.

  • #861 accepts_nested_attributes_for는 더 이상 해시 또는 해시 배열 을 통해 직접 내장된 문서를 설정하다 하는 데 필요하지 않습니다.

  • #857 기본 문서 가 편집증일 때 종속 관계가 계단식으로 정렬되는 문제를 수정했습니다.

  • #768 class_attribute 정의 모듈 전체를 수정했습니다.

  • #408 이제 내장된 문서를 Mongoid::Paranoia 통해 일시 삭제할 수 있습니다.

2.3.0

새로운 기능

  • 이제 Mongoid는 기본적으로 현지화된 필드를 지원하며, 해당 필드를 국가 및 언어 설정 => 값 쌍의 해시로 저장합니다. field :name, localize: true

  • #1275 안전 모드 의 기본값 이 true인 애플리케이션의 경우, 이제 #unsafely: person.unsafely.save, Person.unsafely.create 를 통해 단일 작업을 안전 모드 없이 지속하도록 지시할 수 있습니다. (맷 샌더스)

  • #1256 이제 Mongoid가 Rails 엔진에서 모델에 대한 인덱스를 생성할 수 있습니다. (카이오 필리핀어)

  • #1228 차단 을 #key에 전달하여 복합 키의 사전 서식 지정을 허용합니다. (벤 헌들리)

  • 이제 #1222 범위가 지정된 대량 할당이 지원됩니다. (앤드류 셰이두로프)

  • #1196 이제 #timeless: person.timeless.save, Person.timeless.create(:title => "Sir") 를 사용하여 호출별로 타임스탬프를 해제할 수 있습니다.

  • #1103 개발자가 복잡한 사용자 지정 기준을 만들 수 있습니다. (Ryan Ong)

  • Mongoid는 이제 ActiveResource 클라이언트가 직렬화된 문서를 더 쉽게 사용할 수 있도록 필드에 값이 없는 경우에도 serializable_hashto_json 결과에 정의된 모든 필드를 포함합니다.

  • 이제 MongoDB의 $and 연산자 에 대한 지원이 다음 형식으로 제공됩니다: Criteria#all_of(*args) 여기서 args는 다중 해시 표현식입니다.

  • #1250, #1058 이제 관계에 :cascade_callbacks => true 를 설정하여 내장된 문서에서 상위 저장 시 콜백을 실행할 수 있습니다. (pyromanic, 폴 로자니아, 잭 찰튼)

주요 변경 사항

  • Mongoid는 이제 활성 모델 3.1 이상에 종속됩니다.

  • Mongoid는 이제 mongo Ruby 드라이버 1.4 이상에 종속됩니다.

  • Mongoid에는 MongoDB 2.0.0 이상이 필요합니다.

해결된 문제

  • #1308 HABTM 찾기 범위가 수정되었습니다.

  • #1300 네임스페이스 모델은 재귀 임베딩을 올바르게 처리하다 해야 합니다.

  • #1299 모든 관계에 inverse_of가 정의되어 있지 않아도 버전 관리가 포함된 자체 참조 문서가 더 이상 실패하지 않습니다.

  • #1296 내부 구축 메서드의 이름을 _Building으로 변경했습니다.

  • #1288, #1289 _id 및 updated_at는 버전이 지정된 속성의 일부가 아니어야 합니다.

  • #1273 이제 Mongoid.preload_models가 사전 로드 구성 옵션이 설정하다 있는지 확인하며, 여기서 Mongoid.load_models는 항상 모든 것을 로드합니다. (라이언 맥기어리)

  • #1244 이제 하나의 관계가 기본값 종속 동작을 준수합니다.

  • #1225 $ 설정하다 을 통해 내장된 문서의 지연된 지속성을 수정했습니다.

  • #1166 환경 변수가 정의되지 않은 경우 Railtie에서 구성을 로드하지 마세요. (테렌스 리)

  • 이제 #1052 alias_attribute 이(가) 예상대로 다시 작동합니다.

  • #939 #becomes를 통해 업캐스팅할 때 기본값 속성을 적용합니다. (크리스토스 파파스)

  • #932 앞에 0이 있는 정수 필드의 캐스팅을 수정했습니다.

  • #948 버전이 존재하는 경우 복제 시 버전 번호를 재설정합니다.

  • #763 명명된 범위를 연결할 때 $in 기준 배열을 병합하지 마세요.

  • #730 원본 지속성 후에 게시 을 추가한 기존 모델에 이제 마이그레이션 없이 새 관계식을 추가할 수 있습니다.

  • #726 복합 키가 있는 내장된 문서는 고유성을 올바르게 검증하지 못합니다.

  • #582 이제 순환 비내장 관계가 고유성을 올바르게 검증합니다.

  • #484 모든 유형의 여러 범위로 고유성을 검증합니다. 이제 제대로 작동합니다.

  • Mongoid::Versioning 으)로 생성된 버전을 삭제해도 더 이상 관계에 대한 종속 종속이 실행되지 않습니다.

2.2.5

  • 이는 2.2.x 문제를 해결하기 위한 소규모 패치 릴리스입니다. 자산 컴파일 중 Herku 오류가 발생했습니다.

2.2.4

  • #1377 nil 또는 정의되지 않은 값을 올바르게 처리하다 집계 함수를 수정합니다. (맥심 가르시아)

  • #1373 범위가 다른 범위를 재정의하는 경우 경고합니다.

  • #1372 유효성 검사 를 위해 읽기 속성 내부에 바인딩할 때는 유지되지 않습니다.

  • #1358 inverse_of가 nil로 설정하다 경우 다대다 동기화에서 유형 오류가 수정되었습니다.

  • 이제 #1356 $in 기준을 동일한 키의 복잡하지 않은 기준에 오류 없이 연결할 수 있습니다.

  • 1350#, #1351 string double 키를 매개 변수화할 때 따옴표 및 물결표의 변환 오류가 수정되었습니다.

  • #1349 Enumerable을 포함할 때 Mongoid 문서가 폭발하지 않아야 합니다. (조나스 니클라스)

2.2.3

  • #1295 여러 개의 포함이 첫 번째 항목의 긴급 로딩만 실행하도록 수정했습니다.

  • #1225 $ 설정하다 을 통해 내장된 문서의 지연된 지속성을 수정했습니다.

  • #1002 BSON 객체 ID 변환을 수정하여 먼저 합법인지 확인합니다.

2.2.2

  • 이 릴리스에서는 mongo Ruby 드라이버의 1.3.x에 대한 종속성 제한이 제거됩니다. 이제 사용자는 1.3.x를 사용할 수 있습니다. 통해 1.4.x.

2.2.1

해결된 문제

  • #1210, #517 내장된 문서 관계 쿼리에서 점 표기법 을 사용할 수 있도록 허용합니다. (스코트 엘라드)

  • #1198 열거형 대상은 로드된 문서에 Docs 가 없는 경우 기준 개수를 사용해야 합니다.

  • #1164 남아 있는 no 메서드 in_memory 오류를 제거합니다.

  • #1070 사용자 지정 필드 직렬 변환기가 자체 생성자를 가질 수 있도록 허용합니다.

  • #1176 after_destory 콜백에서 내장된 Docs 의 상위 문서에 액세스 를 허용합니다.

  • #1191 컨텍스트 그룹 메서드(최소, 최대, 합계)는 더 이상 NaN을 반환하지 않고 필드 가 없거나 값이 있는 경우 nil을 반환합니다.

  • #1193, #1271 다음이 포함된 정수 필드에 대해서는 항상 정수를 반환합니다.000 부동 소수점이 아닌 정밀도.

  • #1199 여러 번 읽을 때 해시 및 배열 필드 액세스 의 성능 문제를 수정했습니다.

  • #1218 정수 외래 키가 있는 모델을 참조하는 관계 관련 문제를 수정했습니다.

  • #1219 한 번의 호출로 동일한 내장된 문서 에서 푸시 및 풀링할 때 충돌하는 수정 문제를 수정했습니다.

  • #1220 바인딩 시 메타데이터를 nil로 덮어쓰지 않아야 합니다.

  • #1231 문서 포함 후 Ruby의 네이티브 세트와의 충돌을 피하기 위해 Mongoid의 원자 설정하다 클래스 이름을 세트로 변경했습니다.

  • #1232 계단식 배열 시 before_destory 콜백을 호출하는 동안 관련 모델에 액세스 하는 문제를 수정합니다.

  • #1234 문서를 파기할 때 발생하는 HABTM 외래 키 동기화 문제를 수정했습니다.

  • #1243 다형성 관계는 ID가 문자열로 정의되어 있는지 쿼리할 때 객체 ID로 변환되지 않습니다.

  • #1247 첫 번째 문서 를 보장하기 위해 Model.first가 ID를 오름차순으로 정렬하도록 합니다.

  • #1248 임베딩된 many 관계에 #unscoped를 추가했습니다.

  • #1249 중첩된 속성의 삭제 플래그는 이제 관계를 깨는 대신 has_many에 대한 문서 를 실제로 삭제합니다.

  • #1272 복제본 세트 연결을 생성할 때 구성 옵션을 수정하지 마세요.

2.2.0

새로운 기능

  • 이제 Mongoid에는 Criteria#includes(*args) 형식의 선행 로딩이 포함됩니다. 이는 has_one, has_many, exists_to 연관 관계에서 작동하며 작동하려면 ID 맵을 활성화해야 합니다. mongoid.yml identity_map_enabled: true 을(를) 설정합니다. 예: Person.where(title: "Sir").includes(:posts, :game)

  • 이제 관계에서 모듈을 :extend 옵션의 값으로 사용할 수 있습니다. (Roman Shterenzon)

  • 고정 사이즈 컬렉션은 #store_in 매크로에 Person.store_in :people, capped: true, max: 1000000옵션을 전달하여 만들 수 있습니다.

  • Mongoid::Collection은 이제 다음을 지원합니다. collection.find_and_modify

  • Document#has_attribute? 이제 별칭을 Document#attribute_present?

  • #930 이제 mongoid.yml을 통해 다음을 수행하여 Mongoid 로거를 끌 수 있습니다. logger: false

  • #909 이제 이전의 유용하지 않은 유효성 검사 오류 대신 뱅 메서드를 계속 사용하고 콜백 이 false를 반환하면 Mongoid::Errors::Callback 예외가 발생합니다.

주요 변경 사항

  • #1173 has_many 관계는 더 이상 관계 설정하다 (= [ doc_one, doc_two ])의 모든 문서를 삭제 하지 않지만 종속 옵션을 살펴보고 어떤 동작이 발생해야 하는지 결정합니다. : 삭제 및 :destory는 이전과 같이 작동하고, :nullify 및 옵션을 지정하지 않으면 삭제하지 않고 이전 문서를 모두 무효화합니다.

  • #1142, #767 상위 속성 설정하다 를 통해 액세스할 때 포함된 관계가 더 이상 원자적으로 즉시 유지되지 않습니다. 여기에는 중첩된 속성 설정과 attributes= 또는 write_attributes 가 포함됩니다. 그러면 하위 변경 사항은 더티 상태로 유지되며 해당 변경 사항이나 상위 문서 에 대해 저장이 호출될 때 원자적으로 업데이트 됩니다.

해결된 문제

  • #1190 README 및 CHANGELOG를 마크다운으로 변경하여 발생하는 gemspec 오류를 수정했습니다.

  • #1180, #1084, #955 Mongoid는 이제 기준에 따라 객체 ID로 변환하려고 할 때 이름에 /id/ 가 포함되어 있는지 확인하지 않고 필드 유형을 확인합니다.

  • #1176 열거 가능한 대상은 호출 시 항상 메모리 내 문서를 먼저 반환해야 합니다. #first

  • #1175 생성하는 동안 다대다 관계의 양쪽이 동기화 되어 있는지 확인합니다.

  • #1172 참조된 열거 가능한 관계가 이제 #to_json 을 올바르게 처리하다 합니다(Daniel Doubovkine).

  • #1040 self.class에 대한 모든 위임 호출을 제거하여 클래스 로드 시간 성능을 향상시켰습니다.

2.1.9

해결된 문제

  • #1159 중첩될 때 서로 상쇄되지 않도록 빌드 블록을 수정했습니다.

  • #1154 빈 배열 설정하다 에서 다대다 문서를 삭제 하지 않습니다.

  • #1153 애프터 콜백에서 상위 문서 참조를 유지합니다.

  • #1151 자체 참조 문서에서 관련 유효성 검사 무한 루프를 수정합니다.

  • #1150 belongs_to 에 연결된 유효성 검사는 기본값 false 입니다.

  • #1149 belongs_to 관계의 메타데이터 설정을 수정했습니다.

  • #1145 메타데이터 역방향 nil inverse_of 메타데이터는 가 으로 설정하다 경우 을 반환해야 nil 합니다.

  • #1139 열거 가능한 대상이 이제 배열처럼 괸리됩니다.

  • #1136 belongs_to 상위 항목을 nil 로 설정해도 더 이상 상위 항목이 삭제되지 않습니다.

  • #1120 관계에 응답하지 않는 경우 관계에 대해 in_memory 을(를) 호출하지 마세요.

  • #1075 기본값 절차에서 self 을(를) 문서 인스턴스 로 설정합니다.

  • #1072 중첩된 문서의 속성을 작성하는 데 해시 또는 해시 배열 을 사용할 수 있습니다.

  • #990 내장된 문서는 여러 상위 정의와 함께 단일 embedded_in 를 사용할 수 있습니다.

2.1.8

해결된 문제

  • #1148 관계의 respond_to? 가 제대로 반환되도록 수정했습니다.

  • #1146 필드를 정의할 때 Mongoid 파괴적 필드 검사를 다시 추가했습니다.

  • #1141 기준에서 nil 값의 변환을 수정했습니다.

  • #1131 Mongoid/Kaminari가 올바르게 페이지 매김하는지 확인했습니다.

  • #1105 원자적 업데이트 소비자가 클래스로 범위가 지정되도록 수정했습니다.

  • 이제 기본값 lambdas 및 procs의 #1075 self 이 문서 인스턴스 참조합니다.

  • #740 embedded_object_id 구성 매개 변수를 제거했습니다.

  • #661 내장된 문서의 메타데이터 캐싱을 수정했습니다.

  • #595 관계 다시 로드 플래그를 수정했습니다.

  • #410 이제 한 관계에서 다른 관계로 문서를 이동하는 것이 예상대로 작동합니다.

2.1.7

이는 자기공명공명영상(MRI 1.8.7 문제를 수정하기 위한 특정 릴리스입니다. 2.1.6 에 의해 도입된 손상.

2.1.6

해결된 문제

  • #1126 다른 관계 프록시와의 관계 설정을 수정합니다.

  • #1122 이제 해시 및 배열 필드가 액세스 및 변경 시 더티로 올바르게 플래그 지정됩니다.

  • #656 이미 로드된 연결의 설정 해제 시 관계가 손상되는 문제를 수정했습니다.

  • #647 값을 제거하려면 #remove_attribute 보다 #unset 을 사용하는 것이 좋습니다.

  • #290 딥베딩된 문서에 대한 푸시를 확인합니다.

2.1.5

해결된 문제

  • #1116 포함된 하위 항목은 삭제 콜백에서 상위 항목에 대한 참조를 유지합니다.

  • #1110, #1115 문서의 메타데이터 관련 헬퍼를 메모하지 마세요.

  • #1112 db:create_indexes 이(가) 더 이상 하위 클래스를 여러 번 인덱싱하지 않습니다.

  • #1111, #1098 _id $set 작업에서 를 설정하다 하지 마세요.

  • #1007 업데이트 속성이 배열 변경 사항을 올바르게 추적합니다.

2.1.4

이번 릴리스는 Psych에서 생성된 gemspec을 가져오기 위한 특정 출시하다 이므로 새로운 YAML 구문 분석기를 사용하는 루비에서 더 이상 구문 분석 오류가 발생하지 않습니다.

2.1.3

해결된 문제

  • #1109 유효성 검사가 일대일 메모리에 로드되지 않던 문제를 수정했습니다.

  • #1107 Mongoid는 더 이상 mongoid/railtie 에서 필수 을(를) 원하지 application.rb 않습니다.

  • #1102 중첩된 속성이 삭제되는 문제를 수정했습니다.

  • #1097 이제 다시 로드에서 after_initialize 콜백을 실행합니다.

  • #1079 더 이상 중복되지 않는 문서를 임베드합니다.

  • #1078 내장된 문서에서 일치하는 배열 기준을 수정했습니다.

  • #1028 일대다 및 다대다 관계에서 범위 지정을 구현합니다.

  • #988 다대다 지우기는 더 이상 하위 문서를 삭제하지 않습니다.

  • #977 관계 자동 저장은 중첩된 속성을 통해서도 작동합니다.

  • #972 재귀 임베딩이 이제 생성된 이름의 네임스페이스를 처리합니다.

  • #943 Document#attributes 을(를) 재정의하지 마세요.

  • #893 다대다 관계에서 카운트가 캐싱되지 않는지 확인합니다.

  • #815 after_initialize 가 올바른 위치에서 실행 되고 있는지 확인합니다.

  • #793 any_of 범위가 다른 범위와 올바르게 연결되어 있는지 확인합니다.

  • #776 하위 클래스를 처리할 때 mongoid 케이스의 품질을 수정했습니다.

  • #747 키를 사용하여 문자열 값을 렌더링하는 복잡한 기준을 수정했습니다.

  • #721 #safely 는 이제 유효성 검사 오류가 발생할 때 올바르게 발생시킵니다.

2.1.2

해결된 문제

  • 기준에 따라 #1082 별칭 sizelengthcount 으로 지정합니다. (애덤 그린)

  • #1044 동일한 클래스에 대해 여러 관계가 정의된 경우 inverse_of 이 정의되지 않은 경우 항상 기본값 역방향을 먼저 반환합니다.

  • #710 중첩된 속성은 해시 또는 배열에서 id_id 를 모두 허용합니다.

  • #1047 embeds_man 푸시 및 대체에 전달된 nil 값을 무시합니다. (데릭 베일리)

2.1.1

해결된 문제

  • #1021, #719 다대다 관계는 새 문서를 푸시할 때 예비 데이터베이스 쿼리를 trigger 하지 않습니다.

  • #607 대규모 연관 관계에서 create 를 호출해도 전체 관계가 로드되지는 않습니다.

  • #1064 Mongoid::Paranoiaunscopedscoped 을 준수해야 합니다.

  • #1026 model#update_attribute 은(는) 이제 부울을 false 으)로 업데이트 할 수 있습니다.

  • #618 Crack XML 라이브러리는 String 클래스에 #attributes 메서드를 추가하여 Mongoid를 중단합니다. (Stephen McGinty)

2.1.0

주요 변경 사항

  • 이제 Mongoid는 #bit#rename 원자 조작을 제대로 지원하기 위해 MongoDB 1.8.x가 필요합니다.

  • Mongoid에서 기존의 슬레이브 지원 이 제거되었습니다. 기존 마스터 및 슬레이브 설정 대신 복제본 세트를 사용해야 합니다.

  • 사용자 지정 필드 직렬화가 변경되었습니다. 변경 사항은 직렬화 가능 을 참조하세요.

  • 더티 속성 추적이 ActiveModel을 사용하도록 전환되었으며, 이로 인해 많은 버그 수정 및 변경 사항이 적용되었습니다.

  • #756 콜백과 관찰자가 방금 이전_변경된 내용 대신 변경된 내용을 확인한 후

  • #434 이제 문서가 새롭거나 인스턴스화한 상태 가 데이터베이스 상태 와 다른 경우 더티(dirty)로 플래그가 지정됩니다. 이는 ActiveRecord와 일관적인 합니다.

  • #323 Mongoid는 이제 [필드]_write_change를 지원합니다! ActiveModel::Dirty에서

  • 개발 모드 에서 Mongoid 모델 사전 로드가 이제 기본값을 false 으로 설정합니다.

  • :autosave => true on 관계형 연관 관계형 연관 관계는 이제 생성뿐만 아니라 업데이트 에도 절약됩니다.

  • 이제 Mongoid에 간단한 find_by_id 쿼리에 대한 ID 맵이 있습니다. 문서는 웹사이트 를 참조하세요.

새로운 기능

  • #1067 이제 필드에서 :versioned 속성을 허용하여 Mongoid::Versioning 버전이 지정된 필드를 비활성화할 수 있습니다. (짐 벤튼)

  • #587 다대다 연결에 순서 기본 설정을 추가했습니다. (그레고리 맨)

  • order_by 문을 연결 기능 이 추가되었습니다. (그레고리 맨)

  • #961 임의의 Mongo::Connection 옵션이 Mongoid::Config::Database 객체 를 통과할 수 있도록 허용합니다. (모건 넬슨)

  • 다대다 참조에 autosave 를 사용하도록 설정합니다. (Dave Krupinski)

  • 다음과 같은 명시적 원자 조작이 추가되었습니다: Model#bit, Model#pop, Model#pull, Model#push_all, Model#rename, Model#unset.

  • 힌디어에 대한 예외 번역이 추가되었습니다. (수케르티 아디가)

해결된 문제

  • #974 @nickhoffman 덕분에 attribute_present? 이 올바르게 작동하도록 수정한 다음 속성 값이 false 이 되도록 수정합니다. (그레고리 맨)

  • #960 create indexes rake 작업 은 파일 이름에서 모델 이름을 추측하는 데 문제가 있기 때문에 많은 mongoid 모델을 인식하지 못합니다. (토비아스 슐로트케)

  • #874 MM 참조에서 삭제는 단방향입니다. (nickhoffman, davekrupinski)

  • Rails 3.1+에서 삭제된 더 이상 사용되지 않는 class_inheritable_hash 를 대체합니다. (콘스탄틴 샤바노프)

  • 전체 다대다 관계를 바꿀 때 일관성 없는 상태 를 수정합니다.

  • 하위 클래스 필드 상속을 추가할 때 상속 가능한 속성을 방해하지 마세요. (Dave Krupinski)

  • #914 $or 선택기를 사용하여 내장된 문서를 쿼리합니다. (최대 골로브니아)

  • #514 관계 확장이 있는 문서의 마셜링을 수정합니다. (크리스 그리에고)

  • Metadata#extension 이제 확장자가 정의된 경우 Proc 대신 Module 을 반환합니다.

  • #837 allow_dynamic_fieldsfalse 로 설정하다 되어 있고 인식할 수 없는 필드 가 있는 내장된 문서 를 로드하면 예외가 발생합니다.

  • #963 해시 회귀를 통한 내장된 문서 배열 초기화(Chris Giego, Morgan Nelson)

  • Mongoid::Config.reset 옵션을 기본값 재설정합니다.

  • Mongoid::Fields.defaults 모델을 더 빠르게 인스턴스화할 수 있도록 메모됩니다.