【发布时间】:2011-09-26 00:49:41
【问题描述】:
我有一个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)。
然后的想法是创建一个从User 返回projects_created 的方法,该方法将仅选择此用户创建的项目。 user.projects 当然会返回与用户关联的所有项目。
假设这种关联相当很常见,那么实现我想要的最佳方式是什么?非常感谢任何方向。
【问题讨论】:
标签: ruby-on-rails associations has-many has-many-through belongs-to