gpt4 book ai didi

ruby - 命名空间内的 Mongoid 文档

转载 作者:可可西里 更新时间:2023-11-01 10:01:33 24 4
gpt4 key购买 nike

如何处理 namespace 内的 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 的引用,但找不到正确的命名空间...

如果我删除 namespace 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com