2017-05-14 43 views
0

我有一个很奇怪的问题。NoMethodError:私人方法`exists_check'要求类

场景:我正在使用MongoDB(mongoid gem)在Rails中处理照片的集合,其中每张照片都属于相册。一些mongo字段由关注点提供,模型的名称空间正确。 所以,

关注:MediaConcerns::Base

module MediaConcerns 
    module Base 
    extend ActiveSupport::Concern 

    included do 
     field :photo_description, type: String 
    end 
    end 
end 

关注:MediaCollectionConcerns::Base

module MediaCollectionConcerns 
    module Base 
    extend ActiveSupport::Concern 

    included do 
     field :album_title, type: String 
     field :album_description, type: String 
    end 
    end 
end 

而且MediaType::Photo是:

module MediaType 
    class Photo 
    include Mongoid::Document 
    include Mongoid::Timestamps::Short 
    include MediaConcerns::Base 

    embedded_in :photo_album, class_name: 'MediaCollection::PhotoAlbum'  
    end 
end 

虽然MediaCollection::PhotoAlbum是:

module MediaCollection 
    class PhotoAlbum 
    include Mongoid::Document 
    include Mongoid::Timestamps::Short 
    include MediaCollectionConcerns::Base 

    embeds_many :photos, class_name: 'MediaType::Photo' 
    end 
end 

担心与否,问题仍然存在,并且与embedded_inembeds_many有关。

通过Rails的控制台,当我尝试MediaCollection::PhotoAlbum.new它给:

NoMethodError: private method `existence_check' called for MediaCollection::PhotoAlbum:Class 
from /home/marco/.rvm/gems/ruby-2.4.0/gems/mongoid-6.1.0/lib/mongoid/relations/macros.rb:355:in `relate' 
from /home/marco/.rvm/gems/ruby-2.4.0/gems/mongoid-6.1.0/lib/mongoid/relations/macros.rb:85:in `embeds_many' 
from /home/marco/workspace/backend/app/models/media_collection/photo_album.rb:10:in `<class:PhotoAlbum>' 
from /home/marco/workspace/backend/app/models/media_collection/photo_album.rb:2:in `<module:MediaCollection>' 
from /home/marco/workspace/backend/app/models/media_collection/photo_album.rb:1:in `<top (required)>' 
MediaType::Photo.new

而且是相同的:

NoMethodError: private method `existence_check' called for MediaType::Photo:Class 
from /home/marco/.rvm/gems/ruby-2.4.0/gems/mongoid-6.1.0/lib/mongoid/relations/macros.rb:355:in `relate' 
from /home/marco/.rvm/gems/ruby-2.4.0/gems/mongoid-6.1.0/lib/mongoid/relations/macros.rb:56:in `embedded_in' 
from /home/marco/workspace/backend/app/models/media_type/photo.rb:15:in `<class:Photo>' 
from /home/marco/workspace/backend/app/models/media_type/photo.rb:2:in `<module:MediaType>' 
from /home/marco/workspace/backend/app/models/media_type/photo.rb:1:in `<top (required)>' 

什么问题?如果我删除(仅用于调试)关系embeds_manyembedded_in,问题已解决,但我需要嵌入这些文档!

也许Rails可以找不到:photos,但我指定class_name: 'MediaType::Photo'为mongoid文档建议,同样是为'MediaCollection::PhotoAlbum'

我需要帮助规定。谢谢。

回答

0

我终于找到原因,但没有解决方案,是宝石上的一个bug。

请看这里:github issue

相关问题