限制对rails中模型的任何访问

我意识到gem可能是我的情况的最佳答案,但我真的想要尽可能手动编程。 但我仍然接受任何有关gem的建议,以涵盖我想要的东西。 无论如何,关于这个问题……

我有一个模型设备和普通模型用户(设计gem)有一个连接表devices_users。 设备有一个字段“user_ids”,这是一个整数来表示谁有权访问的用户ID(如果我有多个,那就是一个数组,但这与问题并不相关)。

如果user_ids字段不是他们的用户ID,我想完全限制对Device的访问。 当我完全说,我的意思是我有很多理论上可以访问它的地方:

1)我的模型中有多个方法在视图中调用,并直接访问设备数据 – 例如:

if Device.all.where(:device_guid => model.device_id).first == nil 

2)视图有时会直接调用Device,例如集合选择。 它不应该显示为一个可行的选择。

3)他们应该根本没有控制器访问权限。 没有显示,没有索引,没有。 (这似乎是最容易实现的,只是一个before_filter)。

我的大事 – 必须有一种简单的方法来完全限制访问。 我在应用程序控制器中所做的任何事情都只限制了控制器访问。 我试过的任何东西似乎都没有阻止访问模型中的方法(除非我单独限制每一个 – 我有很多),也没有视图(再次,除非我限制每个实例,我有很多)。

有没有一种简单的方法来完全限制它?

只需限定相关用户的初始查找,如下所示:

user.devices

你仍然可以做以下事情:

user.devices.where(something: true)