gpt4 book ai didi

ruby - MongoMapper:如何创建这样的模型

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

假设我们有两个模型,Task 和 User。所以一个用户可以有很多任务,任务也应该可以有很多用户。但是,任务还应该有一个独特的创建者,他也是用户。

例子:

这个上下文中的任务是这样的:任务ID、任务创建者、应执行任务的用户

User_1 创建了一个任务,然后他就是创建者。User_1 指定 User_2 和 User_3 作为执行任务的用户。所以最后这两个用户不是任务的创建者。

如何创建此模型,以便如果我有一个任务对象,我可以找到它的创建者和应该完成它的用户。如果我有一个用户,我该怎么做才能找到他创建的所有任务以及他应该完成的所有任务。

最佳答案

您需要在任务和用户之间建立多对多关系,并且您需要在用户和任务之间建立一个额外的一对多关系,指向创建者(用户)。

沿着这些线的东西:(我通常使用 Mongoid,所以仔细检查 MongoMapper API 中关系的语法 - 下面的链接..你可以手动指定 :foreign_key 和 :class)

这个想法是你在模型之间有两种关系,一种是多对多关系的模型通过它您可以访问 assigned_usersassigned_tasks,以及通过一对多关系您可以访问 creator任务,或给定用户的 created_tasks。如果您为关系选择了这些名称,就会很清楚哪个是哪个。

class Task
include MongoMapper::Document
key :title, String , :required => true

key :user_ids , Array
has_many :users, :in => user_ids # , :as => :assigned_users

key :creator_id , ObjectId
belongs_to: user, :as => :creator

end

class User
include MongoMapper::Document
key: name, String, :required => true

has_many :tasks # , :as => :assigned_tasks

has_many :tasks, :as => :created_tasks
end

参见:

http://mongomapper.com/documentation/plugins/associations.html

关于ruby - MongoMapper:如何创建这样的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8290251/

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