1

我正在寻找的是一种适当的方式来建立一个系统,用户可以在其中创建项目并因此成为该项目的管理员。然后,用户可以将其他管理员添加到项目中。最后,其他非管理员用户可以加入该项目。

我希望能够验证用户是否是项目的管理员,以检查他是否具有编辑/更新权限。有什么想法吗?

我想我可能会有一个 users_projects 表和一个 projects_admins 表,但我不知道这如何转化为 Rails 关系......

谢谢!

4

1 回答 1

1

好的,我会试一试,但这里没有太多代码。

我在这里看到 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在迁移中)

于 2012-04-20T20:31:28.217 回答