我第一次在我的 Rails 4 项目中使用 Devise,我试图弄清楚如何将模型的所有权锁定给某些用户。
例如,如果用户创建了一个模型,只有该用户应该能够对其执行以下操作,
- 列出属于用户的所有模型
- 看法
- 编辑
- 更新
- 删除
因此,基本上所有的 crud 操作都应仅限于拥有该模型的用户。
您将如何以 DRY 惯用的方式实施所有权?似乎我可以在控制器中进行检查以查看用户是否拥有当前对象,但是如果该对象被另一个控制器使用或用作嵌套更新的一部分,我必须重新实现逻辑,但它没有模型访问当前用户似乎是正确的。
我第一次在我的 Rails 4 项目中使用 Devise,我试图弄清楚如何将模型的所有权锁定给某些用户。
例如,如果用户创建了一个模型,只有该用户应该能够对其执行以下操作,
因此,基本上所有的 crud 操作都应仅限于拥有该模型的用户。
您将如何以 DRY 惯用的方式实施所有权?似乎我可以在控制器中进行检查以查看用户是否拥有当前对象,但是如果该对象被另一个控制器使用或用作嵌套更新的一部分,我必须重新实现逻辑,但它没有模型访问当前用户似乎是正确的。
我会检查 gem cancan,它为用户分配权限,因此如果用户具有所有者角色,则具有所有 CRUD 操作的权限
RailsApp 有一个示例,尽管在 rails 3.2,https://github.com/RailsApps/rails3-bootstrap-devise-cancan,它使用了 devise 和 cancan
希望这可以帮助