【发布时间】:2011-07-25 22:47:08
【问题描述】:
在我们的多租户共享数据库应用程序中,我正在寻找一种方法来扩展模型,以便在运行查询时始终将帐户范围作为 SQL 条件的一部分。理想情况下,我会扩展 ActiveRecord,以便我可以在所有相关模型中包含类似 scoped_by_account 的内容。
我在互联网上进行了搜索,发现了一个声称可以做到这一点的插件。不幸的是,据我所知,插件的范围搜索部分不起作用。该插件(可在此处找到:https://github.com/mconnell/multi_tenant)扩展了 ActiveRecord 并使用以下代码在每次搜索中“注入”附加搜索条件:
def self.unscoped
...
super.apply_finder_options(:conditions => { account_id => Account.current.id })
end
据我所知,这并没有成功地将条件应用于所有搜索。如果我查询Project.all,它将返回所有结果,而忽略当前帐户。只有当我使用Project.unscoped 时它才能正常工作。
我的问题:
如何扩展 ActiveRecord 以在它为该模型运行的每个查询中包含我的附加条件?
感谢您的宝贵时间, 欧文
【问题讨论】:
标签: ruby-on-rails activerecord ruby-on-rails-3.1