如何处理命名空间内的 mongoid 文档?
我有两个 mongoid 文档如下:
module A
module B
Class User
include Mongoid::Document
field :name, type: String
has_and_belongs_to_many :groups, :cascade => :nullify, :class_name => 'A::B::Group'
end
Class Group
include Mongoid::Document
field :name, type: String
has_and_belongs_to_many :users, :cascade => :nullify, :class_name => 'A::B::User'
end
end
end
当我尝试删除包含用户的组时出现问题:
u = User.create()
g = Group.create()
g.users << u
此时u.groups_ids包含了组g的_id,但是当我执行时:
g.destroy
它提示“User”类中缺少名为“A/B/groups_ids”的方法。
它试图删除 u 中 g 的引用,但无法找到正确的命名空间...
如果我删除命名空间 A 和 B 以及 :class_name 选项,一切都会正常。
在这种情况下,哪种处理命名空间的正确方法(如果有)?
最佳答案
解决方案是添加一个 :foreign_key => 'A/B/groups_ids':
Class User
include Mongoid::Document
field :name, type: String
has_and_belongs_to_many :groups, :cascade => :nullify, :class_name => 'A::B::Group', :foreign_key => 'A/B/group_ids'
end
Class Group
include Mongoid::Document
field :name, type: String
has_and_belongs_to_many :users, :cascade => :nullify, :class_name => 'A::B::User', :foreign_key => 'A/B/user_ids'
end
关于ruby - 命名空间内的 Mongoid 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5942079/