gpt4 book ai didi

ruby-on-rails - Rails has_many 并且属于一个

转载 作者:行者123 更新时间:2023-12-04 00:40:19 25 4
gpt4 key购买 nike

我有一个 User模型有很多projects和一个 Project可以有很多的模型users ,但也属于单个用户(即创建此项目的用户)。它必须属于 User .它还允许将用户列表与其相关联,考虑协作。

考虑到这一点,我的模型如下所示:

class User < ActiveRecord::Base
has_many :assigned_projects
has_many :projects, :through => :assigned_projects
end

class Project < ActiveRecord::Base
belongs_to :user
has_many :assigned_projects
has_many :users, :through => :assigned_projects
end

class AssignedProject < ActiveRecord::Base
belongs_to :user
belongs_to :project
end

现在,当我想通过 User 创建一个新项目时,这就是我要做的:
user = User.create(:name => 'injekt')
user.projects.create(:name => 'project one')

现在,我知道 projects通过 AssignedProject 提供加入模型,这就是为什么 project.user将返回 nil .我正在努力弄清楚的是分配项目创建者的最佳方式(顺便说一下,这不是 需要 user ,它可能是 creator 或其他描述性的,只要它是 User 类型)。

然后的想法是创建一个方法来返回 projects_created来自 User这将仅选择此用户创建的项目。哪里 user.projects当然会返回与用户关联的所有项目。

假设这种关联相当普遍,那么实现我想要的最佳方式是什么?任何方向都非常感谢。

最佳答案

为创建者关系在项目表中添加一个 creator_id 列,然后将关联添加到模型中:

class User < ActiveRecord::Base
has_many :assigned_projects
has_many :projects, :through => :assigned_projects

has_many :created_projects, :class_name => "Project", :foreign_key => :creator_id
end

class Project < ActiveRecord::Base
belongs_to :user
has_many :assigned_projects
has_many :users, :through => :assigned_projects

belongs_to :creator, :class_name => "User", :foreign_key => :creator_id
end

http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_many

关于ruby-on-rails - Rails has_many 并且属于一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6536034/

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