我可以根据当前用户为模型设置默认范围吗?
Posted
技术标签:
【中文标题】我可以根据当前用户为模型设置默认范围吗?【英文标题】:Can I set a default scope to a model based on the current user? 【发布时间】:2016-05-08 23:56:00 【问题描述】:目前我有一个User
模型,它使用acts as taggable on
给用户“角色”。所以我会有一个Member
、Admin
、Moderator
的标签。每个用户都有Reports
的关系。但是,会员应该只能看到他们的报告,版主应该能够看到他们的报告和任何会员的报告,最后管理员应该能够看到所有内容。
目前,我会在每个通过 if 语句访问报告的控制器页面上处理此问题,但这似乎是一种糟糕的做法,最终会导致有人看到他们不应该看到的报告。所以这让我想到是否有可能对模型的文件设置某种限制以在一个地方解决这个问题。
【问题讨论】:
您必须注意,您无法访问current_user
以在模型层中可用。您必须将 current_user
作为范围的参数传递
【参考方案1】:
您可以在 applicationController 中使用 request_store gem 和 before_filter 来使 current_user 在模型中可访问。 但请记住,请求并不总是存在,因此请考虑可能的 nils
【讨论】:
以上是关于我可以根据当前用户为模型设置默认范围吗?的主要内容,如果未能解决你的问题,请参考以下文章