1

我正在使用三种模型:用户、项目和用户特权。用户权限模型由 user_id、project_id 和 accessLevel 值组成。用户和项目模型与用户特权具有“has_many”关系,彼此之间具有“has_many, through”关系。

当用户创建项目时,会在 userprivileges 表中创建相应的条目。我不确定如何为用户与另一个用户共享项目的情况创建这样的条目。在这种情况下,用户访问项目页面,单击链接以共享对项目的访问权限,并指定目标用户的电子邮件。

我将这种情况与 UserprivilegesController 中的“新”操作相关联。在“创建”操作中,我可以访问与其共享项目的用户对象(使用电子邮件 ID),但我不确定如何获取共享项目的项目 ID。当用户访问项目页面并单击共享访问链接时,有没有办法存储项目 ID?

谢谢。


感谢 Aldo 的评论,我能够解决这个问题。但是,我有一个相关的问题:是否可以使用 routes.rb 文件来解决这个问题。我可以在 Project 路由中包含 Userprivilege 操作的路由吗?例如,例如:/projects/1/userprivileges/new 或 /projects/1/userprivileges/1/edit。然后,我可以从 URI 中获取项目 ID。但是,一个限制是必要的,这样用户权限只能从它们相关的项目中访问,所以像 /projects/2/userprivileges/1/edit 这样的东西是不允许的。我该如何实施该限制?

4

1 回答 1

0

你应该通过project_idto UserprivilegesController#new。使用link_to选项在您的项目视图中执行此操作,例如:

# app/views/project.html.erb
<%= link_to "Share access", {controller: 'userprivileges', action: 'new', project_id: @project.id}

然后,一旦进入该控制器,您就可以从参数中获取此值,params[:project_id]并使用隐藏字段在表单中的某个位置添加(使用hidden_fieldhidden_field_tag取决于您构建表单的方式)。

这个想法是在用户提交表单时传递,project_id以便UserprivilegesController#create操作可以使用 (again params[:project_id]) 访问它。

于 2012-05-24T16:59:52.280 回答