在rails app中自动过滤所有activerecord查询

时间:2013-01-03 09:54:58

标签: sql ruby-on-rails activerecord filter

在我们的Rails 3网站上,我们需要根据客户有权访问的产品过滤信息。

我们可以通过添加

来实现
["product_id in (?)",[allowed_products_array]] 

在应用程序中为每个具有product_id的类执行的每个查询,但这将是很多更改,因此需要支持很多代码,所以我在考虑以某种方式自动执行此过程

这种自动过滤器的最佳解决方案是什么?

我正在考虑为连接到产品的所有类添加全局ActiveRecord查询覆盖,但我不确定如何实现

1 个答案:

答案 0 :(得分:3)

将default_scope用于此

http://apidock.com/rails/ActiveRecord/Base/default_scope/class

在你的情况下s.th.像

default_scope where("product_id in (?)",[allowed_products_array])

您可以将其提取到模块中 并且包含在您希望拥有此功能的每个模型中。