在我们的多租户共享数据库应用程序中,我正在寻找一种方法来扩展模型,以便在运行查询时始终将帐户范围作为其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以在其为该模型运行的每个查询中包含我的附加条件?
你的时间, 欧文