gpt4 book ai didi

ruby-on-rails - mongoid,创建具有角色的引用

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

我是 mongoDB 的新手,我只是将它用于我正在处理的新 Rails 项目。我现在想做的是,让一个(嵌入式)文档引用另一个集合,但具有不同的角色。

不知怎么的,这似乎行不通。我知道,我无法定义从外部集合到我的嵌入式集合的关系。因此,就我而言,我无法访问我的用户的位置,我对此没有意见。尽管如此,我仍需要定义 referenced_in :location 部分,否则当我尝试添加新 Location 时会收到错误消息 undefined method 'name' for nil:NilClass到地方。

所以这只是前言。我的实际问题 是,这些角色似乎不起作用。当我在 Place locations.create(:user_a => some_user) 中创建一个新位置时,user_b 也被设置为该用户。

有什么办法可以让它工作吗?还是我做错了什么?

class Place
include Mongoid::Document
embeds_many :locations
end

class Location
include Mongoid::Document
embedded_in :place, :inverse_of => :locations
references_one :user_a, :class_name => "User" #, :stored_as => :array
references_one :user_b, :class_name => "User" #, :stored_as => :array
end

class User
include Mongoid::Document
referenced_in :location, :inverse_of => :dropper
referenced_in :location, :inverse_of => :picker
end

最佳答案

我认为您必须消除两个位置关联的歧义(因为引用存储在 referenced_in 端):

class User
include Mongoid::Document
referenced_in :location_a, :inverse_of => :user_a, :class_name => "Location"
referenced_in :location_b, :inverse_of => :user_b, :class_name => "Location"
end

我忍不住觉得可能有更好的方法来做到这一点......

这是更好的方法吗?

class Location
include Mongoid::Document
embedded_in :place, :inverse_of => :locations
referenced_in :user_a, :class_name => "User"
referenced_in :user_b, :class_name => "User"
end

class User
include Mongoid::Document
end

关于ruby-on-rails - mongoid,创建具有角色的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4745797/

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