【问题标题】: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 给用户“角色”。所以我会有一个MemberAdminModerator 的标签。每个用户都有Reports 的关系。但是,会员应该只能看到他们的报告,版主应该能够看到他们的报告和任何会员的报告,最后管理员应该能够看到所有内容。

目前,我会在每个通过 if 语句访问报告的控制器页面上处理此问题,但这似乎是一种糟糕的做法,最终会导致有人看到他们不应该看到的报告。所以这让我想到是否有可能对模型的文件设置某种限制以在一个地方解决这个问题。

【问题讨论】:

  • 您必须注意,您无法访问 current_user 以在模型层中可用。您必须将 current_user 作为范围的参数传递

标签: ruby-on-rails acts-as-taggable-on user-roles default-scope


【解决方案1】:

您可以在 applicationController 中使用 request_store gem 和 before_filter 来使 current_user 在模型中可访问。 但请记住,请求并不总是存在,因此请考虑可能的 nils

【讨论】:

    猜你喜欢
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-14
    • 2021-07-26
    • 1970-01-01
    相关资源
    最近更新 更多