我意识到宝石可能是我情况的最佳答案,但我真的想在可能的情况下手动编程。但我仍然接受任何有关宝石的建议,以涵盖我想要的东西。无论如何,关于这个问题......
我有一个模型设备和普通模型用户(设计宝石),它有一个连接表devices_users。设备有一个字段" user_ids",这是一个整数来表示谁有权访问的用户ID(如果我有多个,那就是一个数组,但这与问题不是真的相关)。
如果user_ids字段不是其用户ID,我想完全限制对 的访问。当我完全说,我的意思是我有很多理论上可以访问它的地方:
1)我的模型中有多个方法在视图中调用,并直接访问设备数据 - 例如:
{{1}}
2)视图有时直接调用Device,例如集合选择。它不应该表现为可行的选择。
3)他们应该根本没有控制器访问权限。没有表演,没有索引,没有。 (这似乎是最容易实现的,只是一个before_filter)。
我的大事 - 必须有一种简单的方法来完全限制访问。我在应用程序控制器中做的任何事情都只限制了控制器访问。我没有尝试任何东西似乎阻止访问模型中的方法(除非我单独限制每个 - 我有很多),也没有视图(再次,除非我限制每个实例,我有一个很多)。
是否有一种简单的方法可以完全限制它?
答案 0 :(得分:1)
只需限定相关用户的初始查询,如下所示:
user.devices
你仍然可以做以下事情:
user.devices.where(something: true)