Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为协作者设置权限_Ruby On Rails_Relational Database - Fatal编程技术网

Ruby on rails 为协作者设置权限

Ruby on rails 为协作者设置权限,ruby-on-rails,relational-database,Ruby On Rails,Relational Database,我的应用程序是rails 3内置的,我使用CanCan来处理权限 我想让我的用户分享他们的项目,并与其他特定用户协作(有点像谷歌文档的做法) 我只是想知道这样做的最佳实践是什么。我现在有一个项目模型和一个用户模型 我应该创建一个has_many:through关系并像collaborator一样调用联接表吗?所以一个项目属于一个用户,并且有很多用户:通过合作者 我不认为这会太复杂,但我以前从未有过这样的关系,所以任何建议都会有帮助 提前感谢!:) 我认为您的项目与用户有多对多关系,这是正确的 除

我的应用程序是rails 3内置的,我使用CanCan来处理权限

我想让我的用户分享他们的项目,并与其他特定用户协作(有点像谷歌文档的做法)

我只是想知道这样做的最佳实践是什么。我现在有一个项目模型和一个用户模型

我应该创建一个has_many:through关系并像collaborator一样调用联接表吗?所以一个项目属于一个用户,并且有很多用户:通过合作者

我不认为这会太复杂,但我以前从未有过这样的关系,所以任何建议都会有帮助


提前感谢!:)

我认为您的
项目
用户
有多对多关系,这是正确的

除非您希望您的权限系统在以后变得更加细粒度,否则这对我来说似乎是一个合理的解决方案:

创建联接表:

rails generate migration create_project_collaborators
class CreateProjectCollaborators
def自动关闭
drop_表:项目合作者
结束
结束

将关系添加到模型:

class Project < ActiveRecord::Base
  has_and_belongs_to_many :collaborators, :class_name => 'User', :join_table => 'project_collaborators'
end
class项目‘User’,:join_table=>‘project_协作者’
结束
class用户“项目合作者”
结束

在您的
能力
课程中,您可以使用
用户#项目(u协作
进行适当授权(此练习将由您自己决定)

我认为您的
项目
用户
有多对多关系,这是正确的

除非您希望您的权限系统在以后变得更加细粒度,否则这对我来说似乎是一个合理的解决方案:

创建联接表:

rails generate migration create_project_collaborators
class CreateProjectCollaborators
def自动关闭
drop_表:项目合作者
结束
结束

将关系添加到模型:

class Project < ActiveRecord::Base
  has_and_belongs_to_many :collaborators, :class_name => 'User', :join_table => 'project_collaborators'
end
class项目‘User’,:join_table=>‘project_协作者’
结束
class用户“项目合作者”
结束
在您的
能力
课程中,您可以使用
用户#项目(u)协作
进行适当授权(此练习将由您决定!)