我正在寻找的是一种适当的方式来建立一个系统,用户可以在其中创建项目并因此成为该项目的管理员。然后,用户可以将其他管理员添加到项目中。最后,其他非管理员用户可以加入该项目。
我希望能够验证用户是否是项目的管理员,以检查他是否具有编辑/更新权限。有什么想法吗?
我想我可能会有一个 users_projects 表和一个 projects_admins 表,但我不知道这如何转化为 Rails 关系......
谢谢!
我正在寻找的是一种适当的方式来建立一个系统,用户可以在其中创建项目并因此成为该项目的管理员。然后,用户可以将其他管理员添加到项目中。最后,其他非管理员用户可以加入该项目。
我希望能够验证用户是否是项目的管理员,以检查他是否具有编辑/更新权限。有什么想法吗?
我想我可能会有一个 users_projects 表和一个 projects_admins 表,但我不知道这如何转化为 Rails 关系......
谢谢!
好的,我会试一试,但这里没有太多代码。
我在这里看到 3 个模型:
前 2 个是简单的模型,具有一些属性。第三个是两者之间的关系,将是一个:m 关系。所以最好在这里使用 has-many-through 关系。
class ProjectAdmin < ActiveRecord::Base
belongs_to :project
belongs_to :user
end
class User < ActiveRecord::Base
has_many :project_admins
has_many :projects, :through => :project_admins
end
class Project < ActiveRecord::Base
has_many :project_admins
has_many :admins, :through => :project_admins
end
当然,您必须通过迁移另外创建 3 个表,然后为项目用户添加类似的关系,然后命名ProjectUser
为模型。至少看一下关于关系的rails指南,“has-many :through”部分。
要将创建者添加到项目中,这应该是两者之间的一对一关系,因此具有以下内容就足够了:
class Project
has_one :creator, :class_name => "User"
end
(当然还有creator_id
在迁移中)