开发者

Mongoid documents inside namespaces

How can I deal with mongoid documents inside namespaces?

I have two mongoid documents as follow:

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

The problem raises when I try to delete a group that contains an user:

开发者_运维问答
u = User.create()
g = Group.create()
g.users << u

at this point u.groups_ids contains the _id of the group g, but when I perform:

g.destroy

It complains of a missing method called 'A/B/groups_ids' in class 'User'.

It is trying to remove the reference of g inside u, but it fails to find the correct namespace...

If I remove the namespaces A and B and the :class_name options everything works fine.

Which is the correct way (if any) to handle namespaces in this scenario?


the solution is to add a :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
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜