如何在Rails中使用项目管理员实现项目

时间:2012-04-20 20:10:29

标签: ruby-on-rails

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

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

我想我可能会有一个users_projects表和一个projects_admins表,但我无法弄清楚这是如何转换为Rails关系....

谢谢!

1 个答案:

答案 0 :(得分:1)

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

我在这里看到3个型号:

  • 用户
  • 项目
  • ProjectAdmin

前两个是简单模型,具有一些属性。第三个是两者之间的关系,将是一个n: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 guide about relations, section "has-many :through"

要将创建者添加到项目中,这应该是两者之间的一对一关系,因此它应该足够:

class Project
  has_one :creator, :class_name => "User"
end

(当然还有迁移中的creator_id