당신은 어떤 버전의 몽고 이드입니까? 내가 Model.none
을하려고 할 때 때문에 빈 집합을 반환 : 당신이, 당신이 변화를 통합하려고 할 수있는 버전으로 업데이트 할 수없는 경우
Model.none
Model.none.count # => 0
none
이 버전 4에서 추가되었다. at line 309 in /lib/mongoid.criteria.rb
에서 이러한 방법은 정의 될 필요가 :
def none
@none = true and self
end
def empty_and_chainable?
[email protected]
end
Mongoid::Contextual#create_context
도 to be changed 필요 :
def create_context
return None.new(self) if empty_and_chainable?
embedded ? Memory.new(self) : Mongo.new(self)
end
그럼 당신은 `/lib/mongoid/contextual/none.rb'를 포함 할 수 있습니다.
편집 : this Gist backports .none
to Mongoid 3 :
module Mongoid
class Criteria
def none
@none = true and self
end
def empty_and_chainable?
[email protected]
end
end
module Contextual
class None
include ::Enumerable
# Previously included Queryable, which has been extracted in v4
attr_reader :collection, :criteria, :klass
def blank?
!exists?
end
alias :empty? :blank?
attr_reader :criteria, :klass
def ==(other)
other.is_a?(None)
end
def each
if block_given?
[].each { |doc| yield(doc) }
self
else
to_enum
end
end
def exists?; false; end
def initialize(criteria)
@criteria, @klass = criteria, criteria.klass
end
def last; nil; end
def length
entries.length
end
alias :size :length
end
private
def create_context
return None.new(self) if empty_and_chainable?
embedded ? Memory.new(self) : Mongo.new(self)
end
end
module Finders
delegate :none, to: :with_default_scope
end
end
오른쪽,하지만 내가 사용하는 3.1.4에서 버전 4에 존재합니다. 나는 아무 것도 내 프로젝트에 복사하려고 시도하지 않을 것이다. 아니면 좋은 생각이 아닌가? – stanley90
'None'을 통합하기 위해 노력해야한다고 생각하는 것으로 내 대답을 업데이트했습니다. 어쩌면 눈살을 찌푸리게 될지도 모르지만 그 변화는 그리 멀지 않은 것처럼 보이므로 괜찮습니다. –
그래서 나는이 https://gist.github.com/stanley90/5a5f35be733642e2afc9 (설정/이니셜 라이저)와 같은 원숭이 패치를 시도하고 있지만 작동하지 않습니다. 내가 잘못하고 있니? – stanley90